{
 "cells": [
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# Digit Recognizer (数字识别器)\n",
    "\n",
    "使用著名的 MNIST 数据学习计算机视觉基础知识\n",
    "\n",
    "![](./../img/Start.png)\n",
    "\n",
    "**纯属感兴趣的选择 <(￣︶￣)↗[GO!]**"
   ],
   "id": "2ab9cfe075fccf68"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 竞争描述",
   "id": "ab076ed021954fd6"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### MNIST\n",
    "\n",
    "***MNIST***（ “修改后的国家标准与技术研究所” ）实际上是计算机视觉的 ***“你好”*** 数据集。\n",
    "\n",
    "自 1999 年发布以来，这个经典的手写图像数据集一直作为基准分类算法的基础。\n",
    "\n",
    "随着新的机器学习技术的出现，MNIST 仍然是研究人员和学习者的可靠资源。"
   ],
   "id": "e42c81521ccc7d61"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 目标\n",
    "\n",
    "在这场比赛中，你的目标是从成千上万的手写图像数据集中 ***正确识别数字***。\n",
    "\n",
    "我们 ***鼓励您尝试不同的算法***，以第一手了解哪些算法运行良好，以及如何比较技术。"
   ],
   "id": "49ec4ca8474be4f9"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 数据集描述\n",
    "\n",
    "数据文件 `train.csv` 和 `test.csv` 包含手绘数字的灰度图像，从 `0` 到 `9` 。"
   ],
   "id": "8086d8931611ec28"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 图像\n",
    "\n",
    "每张图像高 `28` 像素，宽 `28` 像素， ***总共 `784` 像素*** 。\n",
    "\n",
    "每个像素都有一个单独地像素值，表示该像素的亮度或暗度， ***数字越高表示越暗*** 。\n",
    "\n",
    "该像素值是一个 ***介于 `0` 到 `255` 之间的整数***。"
   ],
   "id": "ed76a84f3d827b1e"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 数据集\n",
    "\n",
    "训练数据集（`train.csv`）有 `785` 列。\n",
    "\n",
    "第一列称为 `“label”` ，是用户 ***绘制的数字*** 。\n",
    "\n",
    "其余的列包含关联图像的像素值。"
   ],
   "id": "775b080be60491c4"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 特征值\n",
    "\n",
    "训练集中的每个像素列都有一个类似 `pixelx` 的名称，其中 `x` 是 `0` 到 `783` 之间的整数，包括 `0` 到 `783` 。\n",
    "\n",
    "为了在图像上定位这个像素，假设我们将 `x` 分解为 `x = i * 28 + j` ，其中 `i` 和 `j` 是介于 `0` 到 `27` 之间的整数。\n",
    "\n",
    "然后 `pixelx` 位于 `28 x 28` 矩阵的第 `i` 行和第 `j` 列，（索引为 `0`）。"
   ],
   "id": "f830582c314b51e2"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:41:51.821749Z",
     "start_time": "2025-04-15T02:41:51.118674Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ],
   "id": "31e215661623305b",
   "outputs": [],
   "execution_count": 1
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 一、数据预处理",
   "id": "e35b0e113906c77a"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 数据导入",
   "id": "b46d758e12869f00"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:42:02.288708Z",
     "start_time": "2025-04-15T02:42:00.147976Z"
    }
   },
   "cell_type": "code",
   "source": [
    "train_data = pd.read_csv('./../data/train.csv')\n",
    "test_data = pd.read_csv('./../data/test.csv')"
   ],
   "id": "9ff8407447b01d40",
   "outputs": [],
   "execution_count": 2
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:42:02.904825Z",
     "start_time": "2025-04-15T02:42:02.901191Z"
    }
   },
   "cell_type": "code",
   "source": [
    "X = train_data.iloc[:, 1:]\n",
    "y = train_data['label']"
   ],
   "id": "4d9637e8f30c2a1d",
   "outputs": [],
   "execution_count": 3
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 数据展示",
   "id": "b320b87136e626a2"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-12T08:50:22.383863Z",
     "start_time": "2025-04-12T08:50:22.376309Z"
    }
   },
   "cell_type": "code",
   "source": [
    "pixel_datas = np.array(X).reshape(-1, 28, 28)\n",
    "pixel_datas.shape"
   ],
   "id": "19b563a7d5b66d71",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(42000, 28, 28)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 4
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-12T03:53:35.756504Z",
     "start_time": "2025-04-12T03:53:34.598176Z"
    }
   },
   "cell_type": "code",
   "source": [
    "plt.figure(figsize=(20, 5))\n",
    "for i, pixel_data in enumerate(pixel_datas[:100]):\n",
    "    plt.subplot(5, 20, i + 1)\n",
    "    plt.imshow(pixel_data, cmap='gray')\n",
    "    plt.axis('off')\n",
    "plt.show()"
   ],
   "id": "6f84b87cc43a9743",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 2000x500 with 100 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 5
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 数据切分",
   "id": "c3164cf05ea7d563"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:42:08.136249Z",
     "start_time": "2025-04-15T02:42:07.252938Z"
    }
   },
   "cell_type": "code",
   "source": "from sklearn.model_selection import train_test_split",
   "id": "3538ea2bf84ac794",
   "outputs": [],
   "execution_count": 4
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:42:08.817181Z",
     "start_time": "2025-04-15T02:42:08.664512Z"
    }
   },
   "cell_type": "code",
   "source": [
    "X_train, X_val, y_train, y_val = train_test_split(X, y, random_state=42)\n",
    "X_train.shape"
   ],
   "id": "e4f4aab32984f3ed",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(31500, 784)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 5
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 二、模型训练与评估\n",
    "\n",
    "1. 逻辑回归 --> LogisticRegression\n",
    "2. 支持向量机 --> SVC\n",
    "3. 随机森林 (Bagging) --> RandomForestClassifier\n",
    "4. LightGBM (Boosting) --> LGBMClassifier\n",
    "5. 投票 (Voting) --> VotingClassifier\n",
    "6. 堆叠 (Stacking) --> StackingClassifier\n",
    "\n",
    "（神经网络还未学习）"
   ],
   "id": "51e16ae0e28466c9"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:42:10.943730Z",
     "start_time": "2025-04-15T02:42:10.891804Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.decomposition import PCA"
   ],
   "id": "f7fd82b2d6336122",
   "outputs": [],
   "execution_count": 6
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-12T03:24:19.828727Z",
     "start_time": "2025-04-12T03:22:56.844250Z"
    }
   },
   "cell_type": "code",
   "source": [
    "pca = Pipeline([\n",
    "    ('scaler', StandardScaler()), \n",
    "    ('pca', PCA(n_components='mle', svd_solver='full')), \n",
    "])\n",
    "pca.fit(X_train)\n",
    "pca['pca'].n_components_"
   ],
   "id": "1edd1b273a1fc399",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.int64(695)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 24
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "***保留主要特征数 695***",
   "id": "72fdb7a3cad2699d"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 1、逻辑回归",
   "id": "4f301f10e6f97692"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:42:12.786750Z",
     "start_time": "2025-04-15T02:42:12.783027Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.metrics import roc_auc_score"
   ],
   "id": "ffbeaef894af60ee",
   "outputs": [],
   "execution_count": 7
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "max_iter = 100 时未收敛，区间 200 -- 1000 效果相同，选取 200 。\n",
    "\n",
    "使用 solver = 'saga' 时运行时间过长。\n",
    "\n",
    "经过多次 AUC 测试，最终确定 C 最好地取值范围为：\n",
    "\n",
    "C = 0.004 -- 0.012\n",
    "\n",
    "进行更加精细的参数选取："
   ],
   "id": "49e78178769cd11d"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-12T03:28:05.589344Z",
     "start_time": "2025-04-12T03:24:51.901006Z"
    }
   },
   "cell_type": "code",
   "source": [
    "for c in range(3, 21):\n",
    "    log_reg = Pipeline([\n",
    "        ('scaler', StandardScaler()), \n",
    "        ('pca', PCA(n_components=695, random_state=42)), \n",
    "        ('log', LogisticRegression(max_iter=200, C=c/1000, n_jobs=-1)), \n",
    "    ])\n",
    "    log_reg.fit(X_train, y_train)\n",
    "    score = log_reg.score(X_val, y_val)\n",
    "    y_proba = log_reg.predict_proba(X_val)\n",
    "    auc = roc_auc_score(y_val, y_proba, multi_class='ovr')\n",
    "    print(f\"C: {c / 1000}, Accuracy: {score}, AUC: {auc:.4f}\")"
   ],
   "id": "1f9d528ac321628",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "C: 0.003, Accuracy: 0.9187619047619048, AUC: 0.9933\n",
      "C: 0.004, Accuracy: 0.9199047619047619, AUC: 0.9934\n",
      "C: 0.005, Accuracy: 0.9203809523809524, AUC: 0.9934\n",
      "C: 0.006, Accuracy: 0.9202857142857143, AUC: 0.9934\n",
      "C: 0.007, Accuracy: 0.9207619047619048, AUC: 0.9934\n",
      "C: 0.008, Accuracy: 0.9211428571428572, AUC: 0.9934\n",
      "C: 0.009, Accuracy: 0.9213333333333333, AUC: 0.9934\n",
      "C: 0.01, Accuracy: 0.9216190476190477, AUC: 0.9934\n",
      "C: 0.011, Accuracy: 0.9211428571428572, AUC: 0.9934\n",
      "C: 0.012, Accuracy: 0.9213333333333333, AUC: 0.9934\n",
      "C: 0.013, Accuracy: 0.9212380952380952, AUC: 0.9933\n",
      "C: 0.014, Accuracy: 0.9211428571428572, AUC: 0.9933\n",
      "C: 0.015, Accuracy: 0.9212380952380952, AUC: 0.9933\n",
      "C: 0.016, Accuracy: 0.9214285714285714, AUC: 0.9933\n",
      "C: 0.017, Accuracy: 0.9212380952380952, AUC: 0.9933\n",
      "C: 0.018, Accuracy: 0.920952380952381, AUC: 0.9932\n",
      "C: 0.019, Accuracy: 0.9211428571428572, AUC: 0.9932\n",
      "C: 0.02, Accuracy: 0.921047619047619, AUC: 0.9932\n"
     ]
    }
   ],
   "execution_count": 25
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "C: 0.016, Accuracy: 0.9214285714285714, AUC: 0.9933\n",
    "\n",
    "![](./../img/result0.16.png)\n",
    "\n",
    "C: 0.01, Accuracy: 0.9216190476190477, AUC: 0.9934\n",
    "\n",
    "![](./../img/result0.01.png)\n",
    "\n",
    "**可能间接说明本次数据训练的模型更依赖 AUC 评估**"
   ],
   "id": "1f54bee1e29d7a47"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-12T07:38:54.160693Z",
     "start_time": "2025-04-12T07:38:54.151920Z"
    }
   },
   "cell_type": "code",
   "source": [
    "best_log_reg = Pipeline([\n",
    "    ('scaler', StandardScaler()), \n",
    "    ('pca', PCA(n_components=695, random_state=42)), \n",
    "    ('log', LogisticRegression(max_iter=200, C=0.01, n_jobs=-1, random_state=42)), \n",
    "])\n",
    "best_log_reg"
   ],
   "id": "84f03a0c1d82551",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Pipeline(steps=[('scaler', StandardScaler()),\n",
       "                ('pca', PCA(n_components=695, random_state=42)),\n",
       "                ('log',\n",
       "                 LogisticRegression(C=0.01, max_iter=200, n_jobs=-1,\n",
       "                                    random_state=42))])"
      ],
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[(&#x27;scaler&#x27;, StandardScaler()),\n",
       "                (&#x27;pca&#x27;, PCA(n_components=695, random_state=42)),\n",
       "                (&#x27;log&#x27;,\n",
       "                 LogisticRegression(C=0.01, max_iter=200, n_jobs=-1,\n",
       "                                    random_state=42))])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label  sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" ><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label  sk-toggleable__label-arrow\"><div><div>Pipeline</div></div><div><a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link \">i<span>Not fitted</span></span></div></label><div class=\"sk-toggleable__content \"><pre>Pipeline(steps=[(&#x27;scaler&#x27;, StandardScaler()),\n",
       "                (&#x27;pca&#x27;, PCA(n_components=695, random_state=42)),\n",
       "                (&#x27;log&#x27;,\n",
       "                 LogisticRegression(C=0.01, max_iter=200, n_jobs=-1,\n",
       "                                    random_state=42))])</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator  sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" ><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label  sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content \"><pre>StandardScaler()</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator  sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" ><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label  sk-toggleable__label-arrow\"><div><div>PCA</div></div><div><a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.decomposition.PCA.html\">?<span>Documentation for PCA</span></a></div></label><div class=\"sk-toggleable__content \"><pre>PCA(n_components=695, random_state=42)</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator  sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" ><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label  sk-toggleable__label-arrow\"><div><div>LogisticRegression</div></div><div><a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a></div></label><div class=\"sk-toggleable__content \"><pre>LogisticRegression(C=0.01, max_iter=200, n_jobs=-1, random_state=42)</pre></div> </div></div></div></div></div></div>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 23
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T00:41:43.785454Z",
     "start_time": "2025-04-15T00:41:43.782093Z"
    }
   },
   "cell_type": "code",
   "source": "from sklearn.model_selection import cross_val_score",
   "id": "217772473bbfd744",
   "outputs": [],
   "execution_count": 8
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-12T07:39:38.246634Z",
     "start_time": "2025-04-12T07:39:27.391734Z"
    }
   },
   "cell_type": "code",
   "source": [
    "scores = cross_val_score(best_log_reg, X_train, y_train, cv=3, scoring='accuracy', n_jobs=-1)\n",
    "np.mean(scores)"
   ],
   "id": "2f09806c036aeaad",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(0.9185079365079365)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 25
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-12T07:39:50.715750Z",
     "start_time": "2025-04-12T07:39:40.157778Z"
    }
   },
   "cell_type": "code",
   "source": [
    "best_log_reg.fit(X_train, y_train)\n",
    "best_log_reg.score(X_val, y_val)"
   ],
   "id": "a4bfff089ff04c51",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9216190476190477"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 26
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T00:41:46.120959Z",
     "start_time": "2025-04-15T00:41:46.116660Z"
    }
   },
   "cell_type": "code",
   "source": "from sklearn.metrics import classification_report",
   "id": "dbd85a7ada2681b4",
   "outputs": [],
   "execution_count": 9
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-12T07:39:58.070173Z",
     "start_time": "2025-04-12T07:39:57.914539Z"
    }
   },
   "cell_type": "code",
   "source": [
    "y_pred = best_log_reg.predict(X_val)\n",
    "print(classification_report(y_val, y_pred))"
   ],
   "id": "e5c05aa5e8990509",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.97      0.96      0.97      1025\n",
      "           1       0.95      0.98      0.97      1146\n",
      "           2       0.91      0.90      0.90      1072\n",
      "           3       0.90      0.88      0.89      1151\n",
      "           4       0.92      0.93      0.93      1024\n",
      "           5       0.87      0.88      0.88       898\n",
      "           6       0.94      0.96      0.95      1010\n",
      "           7       0.94      0.92      0.93      1135\n",
      "           8       0.90      0.88      0.89      1005\n",
      "           9       0.90      0.90      0.90      1034\n",
      "\n",
      "    accuracy                           0.92     10500\n",
      "   macro avg       0.92      0.92      0.92     10500\n",
      "weighted avg       0.92      0.92      0.92     10500\n",
      "\n"
     ]
    }
   ],
   "execution_count": 28
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:42:22.788296Z",
     "start_time": "2025-04-15T02:42:22.783449Z"
    }
   },
   "cell_type": "code",
   "source": [
    "def generate_file(final_model, file_name):\n",
    "    image_id = np.arange(1, test_data.shape[0] + 1)\n",
    "    label = final_model.predict(test_data)\n",
    "    result = pd.DataFrame({'ImageId': image_id, 'Label': label})\n",
    "    result.to_csv(f'./../data/{file_name}.csv', index=False)"
   ],
   "id": "136426d2c8ef67b7",
   "outputs": [],
   "execution_count": 8
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": "generate_file(best_log_reg, 'result')",
   "id": "e1f4006834d8752c"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "![](./../img/result.png)",
   "id": "53974687b08ab430"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 2、支持向量机",
   "id": "80459a5da9a9a341"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:42:26.713967Z",
     "start_time": "2025-04-15T02:42:26.709609Z"
    }
   },
   "cell_type": "code",
   "source": "from sklearn.svm import SVC",
   "id": "b77dcec0501a42b5",
   "outputs": [],
   "execution_count": 9
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-12T07:59:39.868281Z",
     "start_time": "2025-04-12T07:59:39.863629Z"
    }
   },
   "cell_type": "code",
   "source": [
    "svc_clf = Pipeline([\n",
    "    ('scaler', StandardScaler()), \n",
    "    ('pca', PCA(n_components=695, random_state=42)), \n",
    "    ('svc', SVC(random_state=42)), \n",
    "])"
   ],
   "id": "f8112c6dbd312c1",
   "outputs": [],
   "execution_count": 12
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-12T08:01:53.163695Z",
     "start_time": "2025-04-12T07:59:45.180165Z"
    }
   },
   "cell_type": "code",
   "source": [
    "svc_clf.fit(X_train, y_train)\n",
    "svc_clf.score(X_val, y_val)"
   ],
   "id": "d19c76aec7eef72c",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9579047619047619"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 13
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-12T04:28:27.882758Z",
     "start_time": "2025-04-12T04:27:41.845473Z"
    }
   },
   "cell_type": "code",
   "source": [
    "y_pred = svc_clf.predict(X_val)\n",
    "print(classification_report(y_val, y_pred))"
   ],
   "id": "c1e833d70eed18b7",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.98      0.98      0.98      1025\n",
      "           1       0.98      0.98      0.98      1146\n",
      "           2       0.90      0.97      0.94      1072\n",
      "           3       0.95      0.95      0.95      1151\n",
      "           4       0.97      0.96      0.96      1024\n",
      "           5       0.95      0.95      0.95       898\n",
      "           6       0.97      0.96      0.96      1010\n",
      "           7       0.96      0.95      0.95      1135\n",
      "           8       0.96      0.94      0.95      1005\n",
      "           9       0.96      0.93      0.94      1034\n",
      "\n",
      "    accuracy                           0.96     10500\n",
      "   macro avg       0.96      0.96      0.96     10500\n",
      "weighted avg       0.96      0.96      0.96     10500\n",
      "\n"
     ]
    }
   ],
   "execution_count": 13
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-12T04:30:27.193222Z",
     "start_time": "2025-04-12T04:28:27.883763Z"
    }
   },
   "cell_type": "code",
   "source": "generate_file(svc_clf, 'result2')",
   "id": "ee397debbf686d7a",
   "outputs": [],
   "execution_count": 14
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "![](./../img/result2.png)",
   "id": "910b993df6c1ed3e"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "C=1 : 0.9579047619047619\n",
    "\n",
    "C=5 : 0.9652380952380952\n",
    "\n",
    "C=7 : 0.9656190476190476\n",
    "\n",
    "C=8 : 0.9658095238095238\n",
    "\n",
    "C=9 : 0.9655238095238096\n",
    "\n",
    "C=10 : 0.9657142857142857\n",
    "\n",
    "C=50 : 0.9655238095238096\n",
    "\n",
    "C=100 : 0.9655238095238096\n",
    "\n",
    "C = 8、10 双峰"
   ],
   "id": "1048ba8d016056da"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-12T08:55:09.826583Z",
     "start_time": "2025-04-12T08:53:10.277511Z"
    }
   },
   "cell_type": "code",
   "source": [
    "svc_clf = Pipeline([\n",
    "    ('scaler', StandardScaler()), \n",
    "    ('pca', PCA(n_components=695, random_state=42)), \n",
    "    ('svc', SVC(C=8)), \n",
    "])\n",
    "svc_clf.fit(X_train, y_train)\n",
    "svc_clf.score(X_val, y_val)"
   ],
   "id": "a19cce2b791ee1da",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9658095238095238"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 12
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-12T08:57:10.728255Z",
     "start_time": "2025-04-12T08:55:15.882873Z"
    }
   },
   "cell_type": "code",
   "source": "generate_file(svc_clf, 'result2_best')",
   "id": "a386fbbf4e40ff81",
   "outputs": [],
   "execution_count": 13
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "![](./../img/result2_best.png)\n",
    "\n",
    "这排名真严实"
   ],
   "id": "e47e49206b807e12"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-12T09:12:09.185568Z",
     "start_time": "2025-04-12T09:08:59.952806Z"
    }
   },
   "cell_type": "code",
   "source": [
    "svc_clf_test = Pipeline([\n",
    "    ('scaler', StandardScaler()),\n",
    "    ('pca', PCA(n_components=695, random_state=42)),\n",
    "    ('svc', SVC(C=10)),\n",
    "]).fit(X_train, y_train)\n",
    "generate_file(svc_clf_test, 'result2_test')"
   ],
   "id": "5e380af45601e8d9",
   "outputs": [],
   "execution_count": 18
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "![](./../img/result2_test.png)\n",
    "\n",
    "笑死！上升一名"
   ],
   "id": "8eb58119144ee1c5"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 3、随机森林",
   "id": "80b209e8987624e1"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:42:35.376004Z",
     "start_time": "2025-04-15T02:42:35.323684Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# TODO 树模型对特征尺度不敏感，不需要 StandardScaler\n",
    "# TODO 随机森林本身具备高效处理高维数据的能力，不需要 PCA\n",
    "from sklearn.ensemble import RandomForestClassifier"
   ],
   "id": "86628ac76cd873cf",
   "outputs": [],
   "execution_count": 10
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "for depth in range(26, 29):\n",
    "    best_score = 0\n",
    "    best_params = dict()\n",
    "    for n in range(400, 601, 100):\n",
    "        rf_clf = RandomForestClassifier(n_estimators=n, max_depth=depth, min_samples_leaf=2, oob_score=True, n_jobs=-1)\n",
    "        rf_clf.fit(X_train, y_train)\n",
    "        score = rf_clf.oob_score_\n",
    "        \n",
    "        if best_score < score:\n",
    "            best_score = score\n",
    "            best_params = {'n_estimators': n, 'max_depth': depth, 'min_samples_leaf': 2}\n",
    "    print(best_score, best_params)"
   ],
   "id": "b93b72f74063a350",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "0.9628571428571429 {'n_estimators': 600, 'max_depth': 26, 'min_samples_leaf': 2}\n",
    "\n",
    "0.9635238095238096 {'n_estimators': 600, 'max_depth': 27, 'min_samples_leaf': 2}\n",
    "\n",
    "0.9623174603174603 {'n_estimators': 600, 'max_depth': 28, 'min_samples_leaf': 2}"
   ],
   "id": "6f312ed98b84b10b"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-14T12:13:52.578346Z",
     "start_time": "2025-04-14T12:13:41.002440Z"
    }
   },
   "cell_type": "code",
   "source": [
    "rf_clf = RandomForestClassifier(n_estimators=600, max_depth=27, min_samples_leaf=2, n_jobs=-1, random_state=42)\n",
    "rf_clf.fit(X_train, y_train)\n",
    "rf_clf.score(X_val, y_val)"
   ],
   "id": "3632ded0fbd23f67",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.964"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 101
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-14T12:14:06.694582Z",
     "start_time": "2025-04-14T12:14:06.591595Z"
    }
   },
   "cell_type": "code",
   "source": "rf_clf.feature_importances_.shape",
   "id": "16cc98099634eb2a",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(784,)"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 102
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:42:44.516328Z",
     "start_time": "2025-04-15T02:42:44.512949Z"
    }
   },
   "cell_type": "code",
   "source": [
    "def plot_digit(data):\n",
    "    image = data.reshape(28, 28)\n",
    "    # matplotlib.cm.hot 热成像图类别\n",
    "    plt.imshow(image, cmap='hot')\n",
    "    plt.axis('off')"
   ],
   "id": "e0dac3f3a2e35376",
   "outputs": [],
   "execution_count": 11
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-14T12:14:51.547209Z",
     "start_time": "2025-04-14T12:14:51.328829Z"
    }
   },
   "cell_type": "code",
   "source": [
    "plot_digit(rf_clf.feature_importances_)\n",
    "plt.savefig('./../img/Importance_RandomForest.png', dpi=300, bbox_inches='tight')"
   ],
   "id": "584810fa7084d3c0",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 104
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-14T12:16:16.856198Z",
     "start_time": "2025-04-14T12:16:15.923082Z"
    }
   },
   "cell_type": "code",
   "source": "generate_file(rf_clf, 'result3')",
   "id": "21b7a1323ae408d",
   "outputs": [],
   "execution_count": 106
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "![](./../img/result3.png)\n",
    "\n",
    "效果与支持向量机相差不大\n",
    "\n",
    "**最关键的是与验证集预测几乎无差**"
   ],
   "id": "fed4f9cfdd765818"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 4、lGBM（LightGBM）",
   "id": "1a92cc5de02dc791"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:42:49.515431Z",
     "start_time": "2025-04-15T02:42:49.486667Z"
    }
   },
   "cell_type": "code",
   "source": "from lightgbm import LGBMClassifier, early_stopping, log_evaluation",
   "id": "1472606530082e98",
   "outputs": [],
   "execution_count": 12
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-14T12:32:17.315122Z",
     "start_time": "2025-04-14T12:31:48.943457Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# TODO 树模型对特征尺度不敏感，不需要 StandardScaler\n",
    "# TODO LightGBM 本身具备高效处理高维数据的能力，不需要 PCA\n",
    "lgbm_clf = LGBMClassifier(n_estimators=1000, max_depth=10, min_child_samples=20, n_jobs=-1)     # , verbosity=-1\n",
    "\n",
    "callbacks = [early_stopping(stopping_rounds=50), log_evaluation(period=100)]\n",
    "lgbm_clf.fit(X_train, y_train, eval_set=[(X_val, y_val)], eval_metric='multi_logloss', callbacks=callbacks)\n",
    "\n",
    "print(f'best_iteration : {lgbm_clf.best_iteration_}')\n",
    "print(f'best_score : {lgbm_clf.best_score_}')"
   ],
   "id": "6accbf98c03951e3",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training until validation scores don't improve for 50 rounds\n",
      "[100]\tvalid_0's multi_logloss: 0.0863439\n",
      "Early stopping, best iteration is:\n",
      "[145]\tvalid_0's multi_logloss: 0.0824551\n",
      "best_iteration : 145\n",
      "best_score : defaultdict(<class 'collections.OrderedDict'>, {'valid_0': OrderedDict([('multi_logloss', np.float64(0.08245513655703991))])})\n"
     ]
    }
   ],
   "execution_count": 129
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-14T12:32:20.972826Z",
     "start_time": "2025-04-14T12:32:20.772382Z"
    }
   },
   "cell_type": "code",
   "source": "lgbm_clf.score(X_val, y_val)",
   "id": "ef595030aa99ee40",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9761904761904762"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 130
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-14T08:59:32.885525Z",
     "start_time": "2025-04-14T08:59:32.748809Z"
    }
   },
   "cell_type": "code",
   "source": [
    "results = lgbm_clf.evals_result_\n",
    "plt.plot(results['valid_0']['multi_logloss'], 'g-', label='Validation Loss')\n",
    "plt.plot([145, 145], [0, 1.7], 'r--', label='Best Iteration')\n",
    "plt.legend()"
   ],
   "id": "12cec197013f4dd9",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1425e617190>"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGdCAYAAAAMm0nCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABP50lEQVR4nO3deXwTZf4H8M8kbdP7ojcUWhDKIRQoUOsFrF3bigiKUlm0gBwr4oEVxa7KobviCqvoirI/FYonx4roggtipSBSuctNl6PQAj1ooS1Jj7TJ/P6IGYwtbdKmmST9vF+v58Vk8mTyHVKaD888MyOIoiiCiIiIyIEo5C6AiIiIyFIMMERERORwGGCIiIjI4TDAEBERkcNhgCEiIiKHwwBDREREDocBhoiIiBwOAwwRERE5HBe5C7AGvV6PS5cuwcfHB4IgyF0OERERmUEURVy7dg0RERFQKCwbU3GKAHPp0iVERkbKXQYRERG1QmFhIbp06WLRa5wiwPj4+AAw/AX4+vrKXA0RERGZo6qqCpGRkdL3uCUsDjA7duzA4sWLsX//fhQVFeHrr7/G2LFjb9h/8uTJWLVqVaP1ffv2xbFjxwAACxYswMKFC02ej4mJwcmTJ82qyXjYyNfXlwGGiIjIwbRm+ofFk3g1Gg1iY2OxbNkys/q/8847KCoqklphYSECAwPx0EMPmfTr16+fSb+dO3daWhoRERF1EBaPwKSkpCAlJcXs/n5+fvDz85Meb9iwAVevXsWUKVNMC3FxQVhYmKXlEBERUQdk89OoP/74YyQmJqJbt24m60+dOoWIiAh0794dEydOREFBga1LIyIiIgdh00m8ly5dwn//+1988cUXJuvj4+ORmZmJmJgYFBUVYeHChbjjjjtw9OjRJif21NXVoa6uTnpcVVXV7rUTWZsoimhoaIBOp5O7FHIiSqUSLi4uvKQEOT2bBphVq1bB39+/0aTf3x6SGjBgAOLj49GtWzesXbsWU6dObbSdRYsWNZr0S+RItFotioqKUF1dLXcp5IQ8PT0RHh4ONzc3uUshajc2CzCiKGLFihV49NFHW/xH5e/vj169euH06dNNPp+RkYH09HTpsfE0LCJHoNfrkZ+fD6VSiYiICLi5ufF/y2QVoihCq9Xi8uXLyM/PR8+ePS2+OBiRo7BZgNm+fTtOnz7d5IjK76nVapw5cwaPPvpok8+rVCqoVCprl0hkE1qtFnq9HpGRkfD09JS7HHIyHh4ecHV1xfnz56HVauHu7i53SUTtwuJorlarkZubi9zcXABAfn4+cnNzpUm3GRkZSEtLa/S6jz/+GPHx8bj55psbPTdnzhxs374d586dw65du3D//fdDqVRiwoQJlpZH5DD4P2NqL/zZoo7A4hGYffv2YeTIkdJj46GcSZMmITMzE0VFRY3OIKqsrMRXX32Fd955p8ltXrhwARMmTEB5eTmCg4Nx++2345dffkFwcLCl5REREVEHYHGAGTFiBERRvOHzmZmZjdb5+fk1O1lx9erVlpZBREREHRjHGYnIZkaMGIHZs2dLj6OiorB06dJmXyMIAjZs2NDm97bWdojIPjDAEFGLRo8ejeTk5Caf++mnnyAIAg4fPmzxdvfu3YsZM2a0tTwTCxYswMCBAxutLyoqsugq4q2RmZkJf3//dn0PIjJggCGiFk2dOhVbt27FhQsXGj23cuVKDBkyBAMGDLB4u8HBwTY7EyssLIxnLxI5EQYYIpmJogiNViNLa24+22/de++9CA4ObjTHTa1WY926dZg6dSrKy8sxYcIEdO7cGZ6enujfvz++/PLLZrf7+0NIp06dwp133gl3d3f07dsXW7dubfSauXPnolevXvD09ET37t3xyiuvoL6+HoBhBGThwoU4dOgQBEGAIAhSzb8/hHTkyBH84Q9/gIeHBzp16oQZM2ZArVZLz0+ePBljx47FkiVLEB4ejk6dOmHWrFnSe7VGQUEBxowZA29vb/j6+mL8+PEoKSmRnj906BBGjhwJHx8f+Pr6Ii4uDvv27QMAnD9/HqNHj0ZAQAC8vLzQr18/fPfdd62uxSY0GkAQDE2jkbsacjI2vRKvo9HpdThcchjV9dVIiEyAQmDeI+urrq+G9yJvWd5bnaGGl5tXi/1cXFyQlpaGzMxMvPTSS9KF99atWwedTocJEyZArVYjLi4Oc+fOha+vLzZt2oRHH30UPXr0wLBhw1p8D71ejwceeAChoaHYvXs3KisrTebLGPn4+CAzMxMRERE4cuQIpk+fDh8fH7zwwgtITU3F0aNHsXnzZvzwww8AYHIzWSONRoOkpCQkJCRg7969KC0txbRp0/Dkk0+ahLRt27YhPDwc27Ztw+nTp5GamoqBAwdi+vTpLe5PU/tnDC/bt29HQ0MDZs2ahdTUVGRnZwMAJk6ciEGDBuGDDz6AUqlEbm4uXF1dAQCzZs2CVqvFjh074OXlhePHj8PbW56fGyJ7wADTjDpdHQb/32AAwLWMa/B24y8L6rgee+wxLF68GNu3b8eIESMAGA4fjRs3Trrr/Jw5c6T+Tz31FLZs2YK1a9eaFWB++OEHnDx5Elu2bEFERAQA4PXXX280b+Xll1+WlqOiojBnzhysXr0aL7zwAjw8PODt7d3i3e2/+OIL1NbW4pNPPoGXlyHAvffeexg9ejT+/ve/IzQ0FAAQEBCA9957D0qlEr1798aoUaOQlZXVqgCTlZWFI0eOID8/X7py+CeffIJ+/fph7969GDp0KAoKCvD888+jd+/eAICePXtKry8oKMC4cePQv39/AED37t0troHImTDANMPd5foVLKvrqxlgqF14unpCnaFuuWM7vbe5evfujVtvvRUrVqzAiBEjcPr0afz000949dVXAQA6nQ6vv/461q5di4sXL0Kr1aKurs7sOS4nTpxAZGSkFF4AICEhoVG/NWvW4N1338WZM2egVqvR0NAAX19fs/fD+F6xsbFSeAGA2267DXq9Hnl5eVKA6devH5RKpdQnPDwcR44csei9fvuekZGRJrc96du3L/z9/XHixAkMHToU6enpmDZtGj799FMkJibioYceQo8ePQAATz/9NGbOnInvv/8eiYmJGDduXKvmHRE5Cx4TaYZCUMDDxQOAIcAQtQdBEODl5iVLs/QeTFOnTsVXX32Fa9euYeXKlejRoweGDx8OAFi8eDHeeecdzJ07F9u2bUNubi6SkpKg1Wqt9neVk5ODiRMn4p577sHGjRtx8OBBvPTSS1Z9j98yHr4xEgQBer2+Xd4LMJxBdezYMYwaNQo//vgj+vbti6+//hoAMG3aNJw9exaPPvoojhw5giFDhuCf//xnu9ViFQoFMHy4ofHqwGRl/IlqgfF/qAwwRMD48eOhUCjwxRdf4JNPPsFjjz0mhaCff/4ZY8aMwSOPPILY2Fh0794d//vf/8zedp8+fVBYWIiioiJp3S+//GLSZ9euXejWrRteeuklDBkyBD179sT58+dN+ri5uUGn07X4XocOHYLmNxNLf/75ZygUCsTExJhdsyWM+1dYWCitO378OCoqKtC3b19pXa9evfDss8/i+++/xwMPPICVK1dKz0VGRuLx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fn5+YnZ2tlhUVCS16upqURRF8fTp0+Krr74q7tu3T8zPzxe/+eYbsXv37uKdd94pc+WWe+6558Ts7GwxPz9f/Pnnn8XExEQxKChILC0tFUVRFB9//HGxa9eu4o8//iju27dPTEhIEBMSEmSuunV0Op3YtWtXce7cuSbrHfnzvHbtmnjw4EHx4MGDIgDxrbfeEg8ePCidffPGG2+I/v7+4jfffCMePnxYHDNmjBgdHS3W1NRI20hOThYHDRok7t69W9y5c6fYs2dPccKECXLtUpOa20+tVived999YpcuXcTc3FyTf7PGszR27dolvv3222Jubq545swZ8bPPPhODg4PFtLQ0mffMVHP7ee3aNXHOnDliTk6OmJ+fL/7www/i4MGDxZ49e4q1tbXSNhz98zSqrKwUPT09xQ8++KDR6x3l82zpu0QUW/4d29DQIN58883i3XffLebm5oqbN28Wg4ODxYyMDLPrYIBpwT//+U+xa9euopubmzhs2DDxl19+kbukVgPQZFu5cqUoiqJYUFAg3nnnnWJgYKCoUqnEm266SXz++efFyspKeQtvhdTUVDE8PFx0c3MTO3fuLKampoqnT5+Wnq+pqRGfeOIJMSAgQPT09BTvv/9+saioSMaKW2/Lli0iADEvL89kvSN/ntu2bWvyZ3XSpEmiKBpOpX7llVfE0NBQUaVSiXfddVej/S8vLxcnTJggent7i76+vuKUKVPEa9euybA3N9bcfubn59/w3+y2bdtEURTF/fv3i/Hx8aKfn5/o7u4u9unTR3z99ddNvvjtQXP7WV1dLd59991icHCw6OrqKnbr1k2cPn16o/8oOvrnafSvf/1L9PDwECsqKhq93lE+z5a+S0TRvN+x586dE1NSUkQPDw8xKChIfO6558T6+nqz6xB+LYaIiIjIYXAODBERETkcBhgiIiJyOAwwRERE5HAYYIiIiMjhMMAQERGRw2GAISIiIofDAENEREQOhwGGiIiIHA4DDBERETkcBhgiIiJyOAwwRERE5HAYYIiIiMjh/D+0/zbIbwJvFwAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 49
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-14T12:32:24.482255Z",
     "start_time": "2025-04-14T12:32:24.476606Z"
    }
   },
   "cell_type": "code",
   "source": "lgbm_clf.feature_importances_.shape",
   "id": "f149efafa446a8b4",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(784,)"
      ]
     },
     "execution_count": 131,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 131
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-14T12:32:25.165503Z",
     "start_time": "2025-04-14T12:32:25.009994Z"
    }
   },
   "cell_type": "code",
   "source": [
    "plot_digit(lgbm_clf.feature_importances_)\n",
    "plt.savefig('./../img/Importance_LightGBM.png', dpi=300, bbox_inches='tight')"
   ],
   "id": "f1a4dc58db879f63",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 132
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-14T08:58:47.491566Z",
     "start_time": "2025-04-14T08:58:47.077163Z"
    }
   },
   "cell_type": "code",
   "source": "generate_file(lgbm_clf, 'result4')",
   "id": "8204f9619b0c75b1",
   "outputs": [],
   "execution_count": 47
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "![](./../img/result4.png)",
   "id": "d9b9c57e3137f3af"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "**RandomForestClassifier 与 LGBMClassifier 特征重要性对比**\n",
    "\n",
    "***(Bagging 与 Boosting 的对比)***"
   ],
   "id": "c70064dad44a37f7"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-14T12:48:22.070779Z",
     "start_time": "2025-04-14T12:48:21.435930Z"
    }
   },
   "cell_type": "code",
   "source": [
    "plt.figure(figsize=(12, 6))\n",
    "plt.subplots_adjust(wspace=0.03)\n",
    "plt.subplot(121)\n",
    "plot_digit(rf_clf.feature_importances_)\n",
    "plt.title('RandomForestClassifier', fontsize=14)\n",
    "plt.subplot(122)\n",
    "plot_digit(lgbm_clf.feature_importances_)\n",
    "plt.title('LGBMClassifier', fontsize=14)\n",
    "plt.savefig('./../img/Comparison_Chart.png', dpi=300, bbox_inches='tight')"
   ],
   "id": "d9f4235ecbd665b1",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1200x600 with 2 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7YAAAH1CAYAAADCqWJzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA5gElEQVR4nO3dd7jcZZ03/vchvQdCqEJCFSJFwBCQlkiVFhAWERZpirpSXGSV4iPwKAIqiqL72+W3dB/AR4ORIrCAIS4dpEi1hZoIiUBITAyE5Pv8wXXO5nAOGLwHDvfyel1XLmVm3vd8ZubMfOc93yltTdM0AQAAgEot09MDAAAAQAnFFgAAgKoptgAAAFRNsQUAAKBqii0AAABVU2wBAACommILAABA1RRbAAAAqqbYAgAAUDXFliqMHj06o0eP7ukxeIva2toyfvz4nh6jkwsvvDBtbW258MILuxx32WWXZdNNN82QIUPS1taWL3zhC0n8/QG8F7zZ9qEnjR8/Pm1tbV0OnzNnTo455pisscYa6dOnT9ra2nL//ffn5ptvTltbW0455ZR3fljoQYrte9QTTzyRtra2Tv/69OmTVVddNfvtt1/uueeenh7xXe2QQw7pcv0t+a+9ENViaTfm8+fPz/e+971MmDAhI0eOTJ8+fbLccstl6623zhlnnJFZs2a9MwO/DW6//fYceOCBmTNnTj73uc/l5JNPzi677NLTYwG8LdqfB7yVx7mpU6fmk5/8ZNZee+0MHjw4/fr1y/ve977svvvu+bd/+7fMnTu32/N4/b9BgwZlo402yqmnnpq//OUvXc6nvci1tbXl6quvfsN5xo0b13G6m2++udvT/O53v8tRRx2VD3zgAxk6dGj69euX1VZbLfvuu28mTZqUxYsXL/Xlf7f50pe+lO9///vZYIMNcvzxx+fkk0/OSiut1NNjQY/p3dMD0LPWWmut/OM//mOSZN68efn1r3+dn/zkJ5k8eXJuvPHGbLvttj084bvb4Ycfnve9731dDt9iiy16YJq31wMPPJCJEyfmySefzKhRo7LnnntmxRVXzJw5c3LHHXfkhBNOyOmnn54ZM2Zk0KBBPT3uG9p7772zxRZbZOWVV+50+DXXXJOmaXLxxRfnwx/+cKfjbrrppndyRIB3lb/+9a/59Kc/nf/zf/5P+vfvnwkTJmTPPfdMv3798qc//Sm33HJLrrnmmnzlK1/JzJkzs8wynfebLPlco2mazJo1K9dee21OOeWUXHfddbnlllvSq1evLufbu3fvnH/++dl99927HPfwww/nrrvuSu/evfPqq692O/dZZ52VL3/5y1m8eHG23nrr7Ljjjhk4cGCefvrp3HjjjZk0aVIOO+ywnHfeeS24lt4+F198cebPn9/l8Kuvvjrrrrturrrqqk6HDx06NI8++miWX375d2pEeFdQbN/j1l577S5vVTnjjDNywgkn5H/9r/+VqVOn9sxglfjUpz71P7LEvt4zzzyTnXbaKX/+859z1lln5ZhjjunyJOS+++7LkUcemYULF/bQlEtn2LBhGTZsWJfDZ8yYkSRZZZVVuhy31lprve1zAbxbHXbYYbn88suz00475aKLLup2r+DNN9+cL37xi1m8eHGXYtvdc42XX345W265Ze64445MnTo1H/nIR7qs+dGPfjRXX311Zs2alZEjR3Y67rzzzssyyyyTnXfeOddcc02X7Lnnnpvjjjsuo0ePzqRJk7Lpppt2Ov7VV1/NRRddlP/6r/9a2quhx6y++urdHj5jxoxud0AMHDgw66233ts9FrzreCsyXRx++OFJkl//+tedDj///PMzceLEjB49Ov37989yyy2XnXfeOVOmTOmyxpKf77jnnnuy4447ZsiQIRk2bFj23nvvPPHEE92e989//vOMHTs2AwYMyIorrphPf/rTefHFF99w1j//+c/5whe+kDXWWCP9+vXLCiuskP322y8PPfRQl9O2v3142rRp+fa3v5111103AwYMyJgxY3L55ZcnSV555ZWcdNJJHZdxo402yrXXXru0V90buuCCCzJu3LgMHjw4gwcPzrhx47p92++S19ttt92WnXbaKcOHD+/02ZqmaXL++ednq622ytChQzNw4MB86EMfyvnnn99lvQULFuSss87KxhtvnGHDhmXQoEEZPXp09ttvvzzwwAMd18uhhx6aJDn00EM7vV2s3UknnZSZM2fmxBNPzLHHHtvtK+ubbLJJpk6dmqFDh77pdfG73/0uX/rSl7LppptmxIgR6d+/f9Zdd90cf/zx3b4l7U9/+lOOOeaYrLPOOhkwYECGDx+e9ddfP5/97Gfz0ksvdZzupZdeyle/+tWMGTMmgwcPztChQ7P22mvn4IMPzpNPPtlxute/7br9Or/ggguSJGussUbH5W//O32jz9i+ldvilFNO6Xi73IUXXphNN900AwcOfNd9BhlgSTfddFMuv/zyrLfeepk8efIbvtV1/PjxufPOO9O799LtM+nXr18mTJiQ5LVteXcOO+ywLFy4MJdcckmnwxcuXJgf/ehH2Wmnnbp919Ts2bPzL//yL+nbt2+uueaaLqU2eW1v8OGHH55///d//5uz/uxnP8snPvGJrL322hk4cGCGDRuWbbbZJpMmTer29FOmTMlHP/rRrLLKKunXr19WXHHFbLPNNjn33HM7ne7ee+/Nvvvum9VXXz39+vXLyJEjM3bs2Jx22mmdTvf6z9i2P59pmiZTp07t2Ga1b0/e7DO2M2fOzD//8z9n7bXXTr9+/bL88stnn3326fZ5U/u2b/bs2TnyyCOz2mqrpXfv3u+6zyBDO3tseUOv3zh9/vOfz8Ybb5wddtghI0eOzPTp0zN58uTssMMOueKKKzJx4sQua9x999355je/mQkTJuQzn/lM7rvvvkyePDkPPvhgHnroofTv37/jtBdffHEOPvjgDB06NAcddFCGDx+eq6++OjvssENeeeWV9O3bt9Pas2bNypZbbpk//vGPGT9+fPbff/88/vjj+elPf5prrrkm119/fbbeeusuMx177LG58847s8cee6RXr165/PLLc8ABB2TZZZfNOeeck0ceeSS77bZbFixYkEsvvTQTJ07Mo48++nfvtTv66KNzzjnnZNVVV+140WDSpEk59NBDc9999+V73/tel8xtt92Wb3zjG5kwYUKOOOKIPPXUU0leK1IHHnhgLrvssqyzzjo54IAD0rdv39xwww05/PDD88gjj+Tb3/52xzoHH3xw/u///b/ZaKONcuihh6Zfv355+umnM2XKlNx9993ZeOONs9dee2X27Nn5+c9/nokTJ+aDH/xgp1nmz5+fyy+/PAMGDMhxxx33ppd1aZ7QXHHFFTnvvPMyYcKEjB8/PosXL84dd9yRM888M1OnTs2vfvWr9OnTp+O8t9pqqzzxxBPZaaedsvfee+eVV17J448/nksuuSTHHXdchg0blqZpsvPOO+fOO+/MVlttlV122SXLLLNMnnzyyVx55ZU56KCDMmrUqG7nGT16dE4++eRMnjw5DzzwQI455pgMHz48STr+tztv9bZo961vfStTpkzJxIkTs9NOO3X7IgHAu0X7C3XHHXdcBgwY8KanXdpSm7z2QnJ7AXv9dqfdFltskTFjxuSCCy7Iscce23H4VVddlVmzZuWwww7r9qMiP/3pTzNnzpwccMABGTNmzJvO0a9fv7856wknnJC+fftm6623zsorr5xZs2blyiuvzL777pvvf//7OeqoozpOe80112SPPfbI8OHDM3HixI7TP/DAA7nkkktyxBFHJEnuv//+fPjDH06vXr0yceLEjBo1KrNnz84jjzySc889NyeddNIbzrPXXntl9OjROfXUUzNq1KgccsghSfI3v+Sw/flS+7uw9tprr8ycOTOTJk3K9ddfn5tuuinjxo3rlHn55ZfzkY98JH/5y1+y5557pnfv3llxxRX/5nUGPaLhPenxxx9vkjQ777xzl+O+8Y1vNEma3XbbrdPh06ZN63LaGTNmNKusskqzzjrrdDp8ypQpTZImSXP55Zd3Ou6ggw5qkjSXXXZZx2EvvfRSM3To0GbQoEHNb3/7247DX3nllWbbbbdtkjSjRo3qtM6hhx7aJGlOOOGETodfc801TZJm7bXXbhYtWtRx+MEHH9wkadZdd91m5syZHYffeeedTZJm+PDhzdZbb9385S9/6Tjuxz/+cZOkOeqoozqdR/tahx9+eHPyySd3+nf66ad3nG7q1KlNkmb99ddvZs+e3XH4Cy+80Ky77rpNkuZXv/pVt9fb+eef3+X6Pvfcc5skzaGHHtq88sorHYe//PLLzR577NEkae65556maZpm9uzZTVtbW7PZZps1r776aqd1Xn311ebFF1/s+O8LLrigSdJccMEFXc7z5ptvbpI0W2+9dZfj/pYkzXbbbdfpsGeeeaZ5+eWXu5z21FNPbZI0P/rRjzoOu/LKK5skzRe+8IUup587d26zYMGCpmma5je/+U2TpNlrr726nG7BggXN3LlzO/77jS5r+236+OOPd1lj1KhRXf7+3spt0TRNc/LJJzdJmkGDBjW/+c1vupwHwDvpzZ4HLGmNNdZokjR//OMf/+7zWGuttTq2kV/96lebf/qnf2rWWmutpn///s23vvWtLrntttuuSdL86U9/ar797W83SZq77rqr4/hdd921GTFiRPPyyy83n/nMZ5okzZQpUzqOP+SQQ5okzX/8x3+8pXnfaPvQ3WWfO3dus+GGGzbDhg1r5s2b13H4xz72sSZJc//993fJ/PnPf+74/8cee2yTpJk8efKbnq5p/vv6eL3utrFN89/PJU4++eROh3/4wx9uevXq1Vx33XWdDv/tb3/bDBkypNlwww07HT5q1KiOv5H58+d3OR94t7HH9j3uD3/4Q8dbVdq/PGrKlClZccUV861vfavTaddYY40u+ZVXXjn77LNPzjnnnI4vFVrStttum49//OOdDjvssMNyySWX5O67787++++fJJk8eXLmzJmTo446Kuuuu27Hafv06ZPTTjst22yzTac1XnnllVx22WUZMWJEvvKVr3Q6btddd82OO+6YG264IbfeemuX7EknndTpszqbb7551lxzzUybNi2nnXZapy8+2meffdKnT5+Ot+2+XndfODFs2LAcf/zxSZKLLrooyWtvQ13yc53LLrtsTj755Bx44IG58MILu8y46aabdrw9eEk/+MEPMmjQoPzwhz/s2KuZJH379s1pp52Wq666Kpdddlk222yzjrcp9e/fv8vnnXr16vWmeyOX9OyzzyZJt2/3+nusuuqq3R5+5JFH5uSTT86NN96YAw88sNNx3e0lGDx4cJfDujtdv379luoV+bfqrdwWSzriiCOy4YYbtnwegLdD+zagu+8fmDx5cu6///5Oh+21115d9sD+8Y9/zKmnntolv/vuu2eHHXZ40/M/6KCDcsIJJ+T888/P2LFjM2PGjFx//fU58sgju7yT6/Uzt2q7teaaa3Y5bPDgwTnkkEPyxS9+MXfffXe22267Tsd3tz0aMWJEl8OW9nSl7rvvvtx222057LDDsvPOO3c6bt11182nP/3pfOc738lDDz2UDTbYoNPx3/zmN//m3np4N1Bs3+O629istNJK+a//+q+svfbanQ6fNm1aTj/99Pzyl7/M9OnT8/LLL3c6fsaMGV2K7euf1Cf/vaGZPXt2x2HtxfH1BS9Jttxyyy5vb3rssceyYMGCTJgwIQMHDuySmTBhQm644Ybcf//9Xdbs7i1PK6+8cqZNm9bluF69emWFFVbo+GKh17v99tvf9Muj7rvvviTp9nOU7Z8tev2TgiQZO3Zsl8Pmz5+fBx98MKusskrOPPPMLse3f2nTY489luS1b0Xcdddd84tf/CKbbrpp/uEf/iHjx4/P2LFjOxWxd1rTNLngggty4YUX5qGHHspLL73U6ecWlryut91226y88so544wz8sADD2T33XfPdtttl/XXX7/T543WX3/9bLTRRrnsssvyzDPPZK+99sr48ePzwQ9+sEupb4W3elssafPNN2/5PAA9YfLkyR0v4LYbPXp0l23pzjvvnOuuu67jv59//vnceuutOeaYY7LVVlvll7/8ZZe3wLZbYYUVsttuu+Xyyy/Pd7/73Vx00UVZtGhRDjvssJZfnjcyc+bMnHHGGbn22mvz5JNP5q9//Wun45fcbu2///654oorssUWW+SAAw7I9ttvn2222abLNxTvt99+Ofvss7P33nvn4x//eHbcccdsu+22b/jib6k77rgjSfLcc891+9nb9u3VY4891qnY9u/f34uxVEOxfY9bcmMza9asXHTRRfnyl7+cPffcM3fddVfHXrE//OEP2XzzzTNnzpxMmDAhe+yxR4YOHZplllkmN998c6ZOndql6Cbp9ouE2kvqokWLOg5r/xKgFVZYocvpe/Xq1eXVyzlz5iTJG37Oo/2nXNpPt7QzvdFxf+83/c6ZMyfLLLNMl29zTF6bva2trdsZu7tcL774YpqmyfTp07t95bvdvHnzOv7/T37yk3zjG9/IpZde2vF5naFDh+bQQw/NN77xjW5fFHi99i8KmT59+t887dI4+uij84Mf/CCrrbZa9txzz6y88sode1RPPfXUTn9Hw4YNyx133JGvfvWrueqqq/KLX/wiSbLaaqvl+OOPzz/90z8lee02+uUvf5lTTjklkyZNyhe/+MUkyciRI3PkkUfmpJNOaulnWf+e26KdzyYBNVlxxRXzxBNPZMaMGV32XF544YUdXyTU/osKS2PEiBHZc889M3DgwOy44475yle+khtuuOENT3/YYYdl8uTJmTRpUi644IJsttlm2Wijjd7w9K3cbr3wwgsZO3ZsnnrqqWy11VbZYYcdMnz48PTq1Sv3339/fv7zn3fabv3DP/xDJk+enO985zv5t3/7t/zwhz9MW1tbJkyYkLPOOquj9I8bNy4333xzxza6/QsMx44dmzPPPLPjxe9WeeGFF5K89hng7r5Fut3rt1srrLBCpxeS4d3MtyLTYeTIkTnuuONy4okn5tFHH+30Ft/vfve7efHFF3PhhRfmhhtuyNlnn53//b//d0455ZSWfKV8+9t0Z86c2eW4RYsW5fnnn+90WHsBfe6557pdr/1tSH/rG3rfbkOHDs3ixYsza9asLsfNnDkzTdN0O2N3G5H202222WZpmuYN/y35LdUDBw7M17/+9UybNi3Tpk3Leeedl/e///353ve+l3/+539eqsswduzY9O3bN/fcc0+3JfytmDlzZn74wx9mo402ymOPPZYLL7wwp59+ek455ZR89rOf7Taz+uqr58ILL8ysWbNy33335cwzz8zixYvz+c9/PpdddlnH6UaMGJFzzjkn06dPzyOPPJIf/OAHWW655XLyySfnm9/8ZtHcr/f33BbtPEEAatL+u97dPZ6Vat9Le/fdd7/p6XbdddesvPLK+fKXv5zf//73HV/E+Ea22mqrJK35DfLzzjsvTz31VL72ta/llltuyTnnnJOvfe1rOeWUU97wHVsTJ07M1KlT8+KLL+baa6/Npz71qdx8883ZZZddOr1bbZtttsm1116bF198MVOmTMmxxx6bBx98MLvttlumTZtWPPuS2rdb55xzzptutw4++OBOOdssaqLY0sWJJ56YVVZZJf/6r//a8XMnf/zjH5OkyzcfN02TW2+9tfg8N9544yTp9vfkbr/99i4/vr7eeuulf//+ufvuu7v90fKbb745SfdvO34nbbLJJkn+e54lvdUZhwwZkvXXXz+PPvpopw3j0lpjjTVy2GGHZerUqRk8eHCuvPLKjuPa92YuuRe93cCBA7P//vvnr3/9a84666w3PY9XX32109uKX2/atGlpmiY77LBDl73Ff+u3BJdZZpl88IMfzJe+9KWOQrvkZWjX1taW9ddfP5///Oc79gB0d7oSpbcFQC3a3/J71llnZcGCBS1du/3n/N5su5G8to365Cc/menTp6d///75xCc+8aan33fffTN06NBMmjSp24+ELKm7d5st6Y2e/yR/e7s1ZMiQ7LLLLjn33HNzyCGH5Lnnnsudd97Z5XQDBgzI+PHjc9ZZZ+XEE0/MX//61zfdg/33aH8R4fbbb2/puvBuotjSxYABA/LlL385CxcuzNe+9rUk6fjs7C233NLptGeccUa3v332Vk2cODFDhw7N+eefn9/97ncdhy9cuLDLl0Mlr31Bzyc+8Yn8+c9/zumnn97puOuuuy7XX3991l577Y5XbXtK+yufp556aqe9nS+99FLHW1hf/+romzn66KMzf/78fPrTn+72ba6PP/54x4sRs2bN6va2efHFF/Pyyy93+qml5ZZbLkny9NNPd3u+p512WkaOHJnTTjst3//+97t9EvKb3/wm48ePf9O9uu1/R7fddlunNZ555plu38L28MMPd7tXvv2w9svwxBNPdPvbyK8/XSu9ldsCoFbbb7999t9//zz66KPZe++9O94R9XpL/q740vrOd76T5LXvU/hbjj322PzsZz/L9ddf/ze//HD48OH51re+lZdffjm77bZbt99lsWjRolx00UVv+G6hdm/0/OfSSy/t+HjMkn71q191+yJx+zvS2rdHt99+e7cvFLxd263NN98848aNy2WXXZYf//jHXY5fvHhxpk6d2tLzhHeaz9jSrSOOOCJnnnlmLr744px44on57Gc/mwsuuCD77LNP9ttvv4wYMSJ33HFH7r333uy2225v+nmNpTFs2LB8//vfzyGHHJKxY8dm//33z7Bhw3L11VdnwIABHZ+ZXVL7755+/etfz2233ZZx48bliSeeyE9+8pMMHDgwF1xwwdvyxUFvxbbbbpujjjoq55xzTjbYYIPss88+aZomkyZNyjPPPJOjjz56qTbo7T7zmc/kjjvuyEUXXZRbb701O+ywQ1ZZZZU899xzeeyxx3LnnXfm0ksvzejRozN9+vRssskm2XjjjbPRRhtl1VVXzfPPP5+f//znWbhwYaffpN1yyy0zYMCAnH322XnxxRc7PhPc/qLC+973vvznf/5n9tprrxxzzDH57ne/m+233z4rrrhi5syZk7vuuit33313hg4d+qZfTNX+LdqTJk3Khz70oWy//fZ57rnncvXVV2f77bfveGW83Q033JB/+Zd/yVZbbZV11103I0aMyLRp03LllVemf//++fznP5/ktS/g+tjHPpbNN988Y8aMyUorrdTxO8vLLLPMUr/t+q14K7cFwLvVgw8+2PE7qK+33nrr5fjjj8/555+fZZZZJpdeemnWWGONTJgwIeuvv3769u2b5557LnfddVcefvjhLL/88t1+PGnJX2BIXvu856233pp77703yy67bLdfwvd6K6ywQvbaa6+lvlxHHHFE5syZk+OPPz6bbrpptt1222yyySYZMGBApk+fnptuuinTp0/Ppz71qTdd56CDDsqZZ56Zo446KlOmTMmoUaPywAMP5KabbsrHPvaxXHHFFZ1Of/TRR2fGjBnZeuutM3r06LS1teWWW27JXXfdlS222CJbb711kteew0yZMiXbbrtt1lhjjfTv3z/33ntvbrrppqy55prZe++9l/qyLq3LLrssEyZMyP7775+zzz47m266aQYMGJCnnnoqt99+e2bNmtXyvfLwjnpHflSId52l+f26c845p0nSHHTQQU3TvPa7aFtttVUzZMiQZvjw4c2uu+7a/PrXv+74fc4lf0PujX5DbcnzPvjgg7sc97Of/azZbLPNmn79+jUrrLBC86lPfap54YUXuv0d0aZpmlmzZjVHH310M2rUqKZPnz7N8ssv3+y7777Ngw8+2OW0b/Y7pW/0G3FN0/1vmLavdfvtt3ebeb3zzz+/GTt2bDNw4MBm4MCBzdixY7v9ndo3u96W9OMf/7jZYYcdmmWXXbbp06dPs+qqqzbjx49vzjrrrGbWrFlN0zTNiy++2JxyyinNtttu26y88spN3759m1VWWaXZZZddmmuvvbbLmtdcc00zduzYZsCAAR2/pft68+bNa84+++xmu+22a5Zffvmmd+/ezfDhw5stt9yyOe2007r89l66+Y29uXPnNl/84heb0aNHN/369WvWWWed5mtf+1rzyiuvdDn9I4880hxzzDHNJpts0owYMaLp169fs+aaazYHH3xw8/DDD3ec7umnn26OP/74ZosttmhWWGGFpm/fvs3qq6/efOxjH+tyG7Xqd2zbLc1t0TRNt/cTgJ7Svi1+s3+vf/yeMmVKc9BBBzVrrrlmM2DAgI7tykc/+tHmX//1X5uXXnppqc6jX79+zVprrdV87nOfa5588skusy35O7Z/S3e/Y7ukxx57rDnyyCObMWPGNIMHD+54nN5rr72an/70p83ixYs7TvtG24f777+/2WmnnZpll122GTJkSLPddts1N954Y7env/zyy5v99tuvWWuttZqBAwc2w4YNazbeeOPmzDPP7PSb6tddd13zyU9+snn/+9/fDBkypBk8eHAzZsyY5sQTT+y07Vjy+ni97m6jpnnz5xIvvPBC85WvfKXZYIMNmgEDBjSDBw9u1llnneaAAw5orrjiik6nfbNtH7wbtTVN07y91RkAAADePj5jCwAAQNUUWwAAAKqm2AIAAFA1xRYAAICqKbYAAABUTbEFAACgaootAAAAVeu9tCcc1Nb2ds4BANWb93f8NLztKwC8uaXZvtpjCwAAQNUUWwAAAKqm2AIAAFA1xRYAAICqKbYAAABUTbEFAACgaoot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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 135
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "***随机森林像把重要性平均分给多个特征，红色更淡且分散；LGBM像放大镜聚焦在关键特征上，红色更浓。***\n",
    "\n",
    "---\n",
    "\n",
    "通过 **随机森林（分散热力）** 与 **LGBM（聚焦热力）** 的对比：\n",
    "\n",
    "直观展现了 **Bagging** 与 **Boosting** 集成方法的核心差异\n",
    "\n",
    ">—— ***群体智慧优化稳定性 vs 迭代强化关键特征精准性***\n",
    "\n",
    "这种差异为模型选择（稳定性优先或特征解释性优先）及特征工程优化方向提供了直接判据。\n",
    "\n",
    "**直白地讲：**\n",
    "\n",
    "两种机器学习模型（随机森林和LGBM）做决策时是有\"关注点\"的差异的。\n",
    "\n",
    ">左边的 随机森林 像很多人投票，每个特征都有点用，***结果更稳定但不够精准***；\n",
    "\n",
    ">右边的 LGBM 像学霸专攻重点，能快速抓住最关键的特征，***判断更精准但容易钻牛角尖***。"
   ],
   "id": "ccbaa84f5c791a71"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 5. 投票 (Voting)\n",
    "\n",
    "SVC | RandomForestClassifier | LGBMClassifier"
   ],
   "id": "a45e30e8a6f80594"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:43:06.797089Z",
     "start_time": "2025-04-15T02:43:06.793796Z"
    }
   },
   "cell_type": "code",
   "source": "from sklearn.ensemble import VotingClassifier",
   "id": "7833ceafbb1d0d36",
   "outputs": [],
   "execution_count": 13
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:45:14.181945Z",
     "start_time": "2025-04-15T02:45:14.176752Z"
    }
   },
   "cell_type": "code",
   "source": [
    "svc_clf = Pipeline([\n",
    "    ('scaler', StandardScaler()),\n",
    "    ('pca', PCA(n_components=695, random_state=42)),\n",
    "    ('svc', SVC(C=10, probability=True, random_state=42)),\n",
    "])\n",
    "rf_clf = RandomForestClassifier(n_estimators=600, max_depth=27, min_samples_leaf=2, n_jobs=-1, random_state=42)\n",
    "lgbm_clf = LGBMClassifier(n_estimators=145, max_depth=10, min_child_samples=20, n_jobs=-1, random_state=42, verbosity=-1)\n",
    "\n",
    "estimators = [('SVC', svc_clf), ('RandomForest', rf_clf), ('LGBM', lgbm_clf), ]"
   ],
   "id": "9c2f0da8c8685524",
   "outputs": [],
   "execution_count": 16
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T01:11:36.748652Z",
     "start_time": "2025-04-15T01:11:36.728764Z"
    }
   },
   "cell_type": "code",
   "source": [
    "vote_hard_clf = VotingClassifier(estimators=estimators, voting='hard', n_jobs=-1)\n",
    "vote_hard_clf"
   ],
   "id": "22aa956da9309131",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "VotingClassifier(estimators=[('SVC',\n",
       "                              Pipeline(steps=[('scaler', StandardScaler()),\n",
       "                                              ('pca',\n",
       "                                               PCA(n_components=695,\n",
       "                                                   random_state=42)),\n",
       "                                              ('svc',\n",
       "                                               SVC(C=10, probability=True,\n",
       "                                                   random_state=42))])),\n",
       "                             ('RandomForest',\n",
       "                              RandomForestClassifier(max_depth=27,\n",
       "                                                     min_samples_leaf=2,\n",
       "                                                     n_estimators=600,\n",
       "                                                     n_jobs=-1,\n",
       "                                                     random_state=42)),\n",
       "                             ('LGBM',\n",
       "                              LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                             n_jobs=-1, random_state=42,\n",
       "                                             verbosity=-1))],\n",
       "                 n_jobs=-1)"
      ],
      "text/html": [
       "<style>#sk-container-id-5 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-5 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-5 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-5 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-5 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-5 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-5 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-5 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-5 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-5 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-5 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-5 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-5 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-5 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-5\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>VotingClassifier(estimators=[(&#x27;SVC&#x27;,\n",
       "                              Pipeline(steps=[(&#x27;scaler&#x27;, StandardScaler()),\n",
       "                                              (&#x27;pca&#x27;,\n",
       "                                               PCA(n_components=695,\n",
       "                                                   random_state=42)),\n",
       "                                              (&#x27;svc&#x27;,\n",
       "                                               SVC(C=10, probability=True,\n",
       "                                                   random_state=42))])),\n",
       "                             (&#x27;RandomForest&#x27;,\n",
       "                              RandomForestClassifier(max_depth=27,\n",
       "                                                     min_samples_leaf=2,\n",
       "                                                     n_estimators=600,\n",
       "                                                     n_jobs=-1,\n",
       "                                                     random_state=42)),\n",
       "                             (&#x27;LGBM&#x27;,\n",
       "                              LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                             n_jobs=-1, random_state=42,\n",
       "                                             verbosity=-1))],\n",
       "                 n_jobs=-1)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label  sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-25\" type=\"checkbox\" ><label for=\"sk-estimator-id-25\" class=\"sk-toggleable__label  sk-toggleable__label-arrow\"><div><div>VotingClassifier</div></div><div><a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.ensemble.VotingClassifier.html\">?<span>Documentation for VotingClassifier</span></a><span class=\"sk-estimator-doc-link \">i<span>Not fitted</span></span></div></label><div class=\"sk-toggleable__content \"><pre>VotingClassifier(estimators=[(&#x27;SVC&#x27;,\n",
       "                              Pipeline(steps=[(&#x27;scaler&#x27;, StandardScaler()),\n",
       "                                              (&#x27;pca&#x27;,\n",
       "                                               PCA(n_components=695,\n",
       "                                                   random_state=42)),\n",
       "                                              (&#x27;svc&#x27;,\n",
       "                                               SVC(C=10, probability=True,\n",
       "                                                   random_state=42))])),\n",
       "                             (&#x27;RandomForest&#x27;,\n",
       "                              RandomForestClassifier(max_depth=27,\n",
       "                                                     min_samples_leaf=2,\n",
       "                                                     n_estimators=600,\n",
       "                                                     n_jobs=-1,\n",
       "                                                     random_state=42)),\n",
       "                             (&#x27;LGBM&#x27;,\n",
       "                              LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                             n_jobs=-1, random_state=42,\n",
       "                                             verbosity=-1))],\n",
       "                 n_jobs=-1)</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label  sk-toggleable\"><label>SVC</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator  sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-26\" type=\"checkbox\" ><label for=\"sk-estimator-id-26\" class=\"sk-toggleable__label  sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content \"><pre>StandardScaler()</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator  sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-27\" type=\"checkbox\" ><label for=\"sk-estimator-id-27\" class=\"sk-toggleable__label  sk-toggleable__label-arrow\"><div><div>PCA</div></div><div><a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.decomposition.PCA.html\">?<span>Documentation for PCA</span></a></div></label><div class=\"sk-toggleable__content \"><pre>PCA(n_components=695, random_state=42)</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator  sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-28\" type=\"checkbox\" ><label for=\"sk-estimator-id-28\" class=\"sk-toggleable__label  sk-toggleable__label-arrow\"><div><div>SVC</div></div><div><a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a></div></label><div class=\"sk-toggleable__content \"><pre>SVC(C=10, probability=True, random_state=42)</pre></div> </div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label  sk-toggleable\"><label>RandomForest</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator  sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-29\" type=\"checkbox\" ><label for=\"sk-estimator-id-29\" class=\"sk-toggleable__label  sk-toggleable__label-arrow\"><div><div>RandomForestClassifier</div></div><div><a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a></div></label><div class=\"sk-toggleable__content \"><pre>RandomForestClassifier(max_depth=27, min_samples_leaf=2, n_estimators=600,\n",
       "                       n_jobs=-1, random_state=42)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label  sk-toggleable\"><label>LGBM</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator  sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-30\" type=\"checkbox\" ><label for=\"sk-estimator-id-30\" class=\"sk-toggleable__label  sk-toggleable__label-arrow\"><div><div>LGBMClassifier</div></div></label><div class=\"sk-toggleable__content \"><pre>LGBMClassifier(max_depth=10, n_estimators=145, n_jobs=-1, random_state=42,\n",
       "               verbosity=-1)</pre></div> </div></div></div></div></div></div></div></div></div>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 23
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T01:11:38.193404Z",
     "start_time": "2025-04-15T01:11:38.161171Z"
    }
   },
   "cell_type": "code",
   "source": [
    "vote_soft_clf = VotingClassifier(estimators=estimators, voting='soft', n_jobs=-1)\n",
    "vote_soft_clf"
   ],
   "id": "fee0f01d40bb0019",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "VotingClassifier(estimators=[('SVC',\n",
       "                              Pipeline(steps=[('scaler', StandardScaler()),\n",
       "                                              ('pca',\n",
       "                                               PCA(n_components=695,\n",
       "                                                   random_state=42)),\n",
       "                                              ('svc',\n",
       "                                               SVC(C=10, probability=True,\n",
       "                                                   random_state=42))])),\n",
       "                             ('RandomForest',\n",
       "                              RandomForestClassifier(max_depth=27,\n",
       "                                                     min_samples_leaf=2,\n",
       "                                                     n_estimators=600,\n",
       "                                                     n_jobs=-1,\n",
       "                                                     random_state=42)),\n",
       "                             ('LGBM',\n",
       "                              LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                             n_jobs=-1, random_state=42,\n",
       "                                             verbosity=-1))],\n",
       "                 n_jobs=-1, voting='soft')"
      ],
      "text/html": [
       "<style>#sk-container-id-6 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-6 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-6 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-6 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-6 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-6 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-6 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-6 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-6 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-6 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-6 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-6 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-6 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-6 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-6 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-6 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-6 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-6\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>VotingClassifier(estimators=[(&#x27;SVC&#x27;,\n",
       "                              Pipeline(steps=[(&#x27;scaler&#x27;, StandardScaler()),\n",
       "                                              (&#x27;pca&#x27;,\n",
       "                                               PCA(n_components=695,\n",
       "                                                   random_state=42)),\n",
       "                                              (&#x27;svc&#x27;,\n",
       "                                               SVC(C=10, probability=True,\n",
       "                                                   random_state=42))])),\n",
       "                             (&#x27;RandomForest&#x27;,\n",
       "                              RandomForestClassifier(max_depth=27,\n",
       "                                                     min_samples_leaf=2,\n",
       "                                                     n_estimators=600,\n",
       "                                                     n_jobs=-1,\n",
       "                                                     random_state=42)),\n",
       "                             (&#x27;LGBM&#x27;,\n",
       "                              LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                             n_jobs=-1, random_state=42,\n",
       "                                             verbosity=-1))],\n",
       "                 n_jobs=-1, voting=&#x27;soft&#x27;)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label  sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-31\" type=\"checkbox\" ><label for=\"sk-estimator-id-31\" class=\"sk-toggleable__label  sk-toggleable__label-arrow\"><div><div>VotingClassifier</div></div><div><a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.ensemble.VotingClassifier.html\">?<span>Documentation for VotingClassifier</span></a><span class=\"sk-estimator-doc-link \">i<span>Not fitted</span></span></div></label><div class=\"sk-toggleable__content \"><pre>VotingClassifier(estimators=[(&#x27;SVC&#x27;,\n",
       "                              Pipeline(steps=[(&#x27;scaler&#x27;, StandardScaler()),\n",
       "                                              (&#x27;pca&#x27;,\n",
       "                                               PCA(n_components=695,\n",
       "                                                   random_state=42)),\n",
       "                                              (&#x27;svc&#x27;,\n",
       "                                               SVC(C=10, probability=True,\n",
       "                                                   random_state=42))])),\n",
       "                             (&#x27;RandomForest&#x27;,\n",
       "                              RandomForestClassifier(max_depth=27,\n",
       "                                                     min_samples_leaf=2,\n",
       "                                                     n_estimators=600,\n",
       "                                                     n_jobs=-1,\n",
       "                                                     random_state=42)),\n",
       "                             (&#x27;LGBM&#x27;,\n",
       "                              LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                             n_jobs=-1, random_state=42,\n",
       "                                             verbosity=-1))],\n",
       "                 n_jobs=-1, voting=&#x27;soft&#x27;)</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label  sk-toggleable\"><label>SVC</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator  sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-32\" type=\"checkbox\" ><label for=\"sk-estimator-id-32\" class=\"sk-toggleable__label  sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content \"><pre>StandardScaler()</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator  sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-33\" type=\"checkbox\" ><label for=\"sk-estimator-id-33\" class=\"sk-toggleable__label  sk-toggleable__label-arrow\"><div><div>PCA</div></div><div><a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.decomposition.PCA.html\">?<span>Documentation for PCA</span></a></div></label><div class=\"sk-toggleable__content \"><pre>PCA(n_components=695, random_state=42)</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator  sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-34\" type=\"checkbox\" ><label for=\"sk-estimator-id-34\" class=\"sk-toggleable__label  sk-toggleable__label-arrow\"><div><div>SVC</div></div><div><a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a></div></label><div class=\"sk-toggleable__content \"><pre>SVC(C=10, probability=True, random_state=42)</pre></div> </div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label  sk-toggleable\"><label>RandomForest</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator  sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-35\" type=\"checkbox\" ><label for=\"sk-estimator-id-35\" class=\"sk-toggleable__label  sk-toggleable__label-arrow\"><div><div>RandomForestClassifier</div></div><div><a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a></div></label><div class=\"sk-toggleable__content \"><pre>RandomForestClassifier(max_depth=27, min_samples_leaf=2, n_estimators=600,\n",
       "                       n_jobs=-1, random_state=42)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label  sk-toggleable\"><label>LGBM</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator  sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-36\" type=\"checkbox\" ><label for=\"sk-estimator-id-36\" class=\"sk-toggleable__label  sk-toggleable__label-arrow\"><div><div>LGBMClassifier</div></div></label><div class=\"sk-toggleable__content \"><pre>LGBMClassifier(max_depth=10, n_estimators=145, n_jobs=-1, random_state=42,\n",
       "               verbosity=-1)</pre></div> </div></div></div></div></div></div></div></div></div>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 24
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T01:39:01.775934Z",
     "start_time": "2025-04-15T01:11:51.424792Z"
    }
   },
   "cell_type": "code",
   "source": [
    "for model in (svc_clf, rf_clf, lgbm_clf, vote_hard_clf, vote_soft_clf):\n",
    "    model.fit(X_train, y_train)\n",
    "    score = model.score(X_val, y_val)\n",
    "    print(model.__class__.__name__, ':', score)"
   ],
   "id": "35d24304f6355141",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Pipeline : 0.9657142857142857\n",
      "RandomForestClassifier : 0.964\n",
      "LGBMClassifier : 0.9761904761904762\n",
      "VotingClassifier : 0.9758095238095238\n",
      "VotingClassifier : 0.9782857142857143\n"
     ]
    }
   ],
   "execution_count": 25
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T01:41:32.107134Z",
     "start_time": "2025-04-15T01:39:22.525830Z"
    }
   },
   "cell_type": "code",
   "source": "generate_file(vote_hard_clf, 'result5_hard')",
   "id": "e5539be0640f74cb",
   "outputs": [],
   "execution_count": 26
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "![](./../img/result5_hard.png)",
   "id": "238347eaa9589494"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T01:44:42.677367Z",
     "start_time": "2025-04-15T01:41:40.099757Z"
    }
   },
   "cell_type": "code",
   "source": "generate_file(vote_soft_clf, 'result5_soft')",
   "id": "8c252c432b2a01bc",
   "outputs": [],
   "execution_count": 27
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "![](./../img/result5_soft.png)",
   "id": "d80835d3c2b294ba"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 6. 堆叠\n",
    "\n",
    "SVC | RandomForestClassifier | LGBMClassifier"
   ],
   "id": "2a65fc81c10dac52"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:43:29.915034Z",
     "start_time": "2025-04-15T02:43:29.911462Z"
    }
   },
   "cell_type": "code",
   "source": "from sklearn.ensemble import StackingClassifier",
   "id": "5ffd1c5a0a0ac8f6",
   "outputs": [],
   "execution_count": 14
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "stack_clf = StackingClassifier(estimators=estimators, cv=3, n_jobs=-1)\n",
    "stack_clf.fit(X_train, y_train)"
   ],
   "id": "4a8979cd35f84662",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T03:06:50.370054Z",
     "start_time": "2025-04-15T03:06:50.349786Z"
    }
   },
   "cell_type": "code",
   "source": "stack_clf",
   "id": "a6c67081c39b0011",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "StackingClassifier(cv=3,\n",
       "                   estimators=[('SVC',\n",
       "                                Pipeline(steps=[('scaler', StandardScaler()),\n",
       "                                                ('pca',\n",
       "                                                 PCA(n_components=695,\n",
       "                                                     random_state=42)),\n",
       "                                                ('svc',\n",
       "                                                 SVC(C=10, probability=True,\n",
       "                                                     random_state=42))])),\n",
       "                               ('RandomForest',\n",
       "                                RandomForestClassifier(max_depth=27,\n",
       "                                                       min_samples_leaf=2,\n",
       "                                                       n_estimators=600,\n",
       "                                                       n_jobs=-1,\n",
       "                                                       random_state=42)),\n",
       "                               ('LGBM',\n",
       "                                LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                               n_jobs=-1, random_state=42,\n",
       "                                               verbosity=-1))],\n",
       "                   n_jobs=-1)"
      ],
      "text/html": [
       "<style>#sk-container-id-2 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-2 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-2 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-2 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-2 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-2 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>StackingClassifier(cv=3,\n",
       "                   estimators=[(&#x27;SVC&#x27;,\n",
       "                                Pipeline(steps=[(&#x27;scaler&#x27;, StandardScaler()),\n",
       "                                                (&#x27;pca&#x27;,\n",
       "                                                 PCA(n_components=695,\n",
       "                                                     random_state=42)),\n",
       "                                                (&#x27;svc&#x27;,\n",
       "                                                 SVC(C=10, probability=True,\n",
       "                                                     random_state=42))])),\n",
       "                               (&#x27;RandomForest&#x27;,\n",
       "                                RandomForestClassifier(max_depth=27,\n",
       "                                                       min_samples_leaf=2,\n",
       "                                                       n_estimators=600,\n",
       "                                                       n_jobs=-1,\n",
       "                                                       random_state=42)),\n",
       "                               (&#x27;LGBM&#x27;,\n",
       "                                LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                               n_jobs=-1, random_state=42,\n",
       "                                               verbosity=-1))],\n",
       "                   n_jobs=-1)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-8\" type=\"checkbox\" ><label for=\"sk-estimator-id-8\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StackingClassifier</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.ensemble.StackingClassifier.html\">?<span>Documentation for StackingClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>StackingClassifier(cv=3,\n",
       "                   estimators=[(&#x27;SVC&#x27;,\n",
       "                                Pipeline(steps=[(&#x27;scaler&#x27;, StandardScaler()),\n",
       "                                                (&#x27;pca&#x27;,\n",
       "                                                 PCA(n_components=695,\n",
       "                                                     random_state=42)),\n",
       "                                                (&#x27;svc&#x27;,\n",
       "                                                 SVC(C=10, probability=True,\n",
       "                                                     random_state=42))])),\n",
       "                               (&#x27;RandomForest&#x27;,\n",
       "                                RandomForestClassifier(max_depth=27,\n",
       "                                                       min_samples_leaf=2,\n",
       "                                                       n_estimators=600,\n",
       "                                                       n_jobs=-1,\n",
       "                                                       random_state=42)),\n",
       "                               (&#x27;LGBM&#x27;,\n",
       "                                LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                               n_jobs=-1, random_state=42,\n",
       "                                               verbosity=-1))],\n",
       "                   n_jobs=-1)</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>SVC</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-9\" type=\"checkbox\" ><label for=\"sk-estimator-id-9\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-10\" type=\"checkbox\" ><label for=\"sk-estimator-id-10\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>PCA</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.decomposition.PCA.html\">?<span>Documentation for PCA</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>PCA(n_components=695, random_state=42)</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-11\" type=\"checkbox\" ><label for=\"sk-estimator-id-11\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SVC</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>SVC(C=10, probability=True, random_state=42)</pre></div> </div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>RandomForest</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-12\" type=\"checkbox\" ><label for=\"sk-estimator-id-12\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>RandomForestClassifier</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>RandomForestClassifier(max_depth=27, min_samples_leaf=2, n_estimators=600,\n",
       "                       n_jobs=-1, random_state=42)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>LGBM</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-13\" type=\"checkbox\" ><label for=\"sk-estimator-id-13\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LGBMClassifier</div></div></label><div class=\"sk-toggleable__content fitted\"><pre>LGBMClassifier(max_depth=10, n_estimators=145, n_jobs=-1, random_state=42,\n",
       "               verbosity=-1)</pre></div> </div></div></div></div></div></div></div><div class=\"sk-item\"><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>final_estimator</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-14\" type=\"checkbox\" ><label for=\"sk-estimator-id-14\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LogisticRegression</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>LogisticRegression()</pre></div> </div></div></div></div></div></div></div></div></div></div></div>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 20
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:27:34.618577Z",
     "start_time": "2025-04-15T02:26:47.679580Z"
    }
   },
   "cell_type": "code",
   "source": "stack_clf.score(X_val, y_val)",
   "id": "72b414a0df0c6a5e",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9791428571428571"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 30
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:30:19.956428Z",
     "start_time": "2025-04-15T02:28:12.417513Z"
    }
   },
   "cell_type": "code",
   "source": "generate_file(stack_clf, 'result6')",
   "id": "87ca3a3b0185ed84",
   "outputs": [],
   "execution_count": 31
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "![](./../img/result6.png)",
   "id": "63ee1fd954b41abc"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "尝试其他最终模型",
   "id": "8e82b82853bc3436"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T02:59:51.567936Z",
     "start_time": "2025-04-15T02:45:25.067869Z"
    }
   },
   "cell_type": "code",
   "source": [
    "stack_clf_svc = StackingClassifier(estimators=estimators, final_estimator=SVC(), cv=3, n_jobs=-1)\n",
    "stack_clf_svc.fit(X_train, y_train)"
   ],
   "id": "8b5aadf18186c8ec",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "StackingClassifier(cv=3,\n",
       "                   estimators=[('SVC',\n",
       "                                Pipeline(steps=[('scaler', StandardScaler()),\n",
       "                                                ('pca',\n",
       "                                                 PCA(n_components=695,\n",
       "                                                     random_state=42)),\n",
       "                                                ('svc',\n",
       "                                                 SVC(C=10, probability=True,\n",
       "                                                     random_state=42))])),\n",
       "                               ('RandomForest',\n",
       "                                RandomForestClassifier(max_depth=27,\n",
       "                                                       min_samples_leaf=2,\n",
       "                                                       n_estimators=600,\n",
       "                                                       n_jobs=-1,\n",
       "                                                       random_state=42)),\n",
       "                               ('LGBM',\n",
       "                                LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                               n_jobs=-1, random_state=42,\n",
       "                                               verbosity=-1))],\n",
       "                   final_estimator=SVC(), n_jobs=-1)"
      ],
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>StackingClassifier(cv=3,\n",
       "                   estimators=[(&#x27;SVC&#x27;,\n",
       "                                Pipeline(steps=[(&#x27;scaler&#x27;, StandardScaler()),\n",
       "                                                (&#x27;pca&#x27;,\n",
       "                                                 PCA(n_components=695,\n",
       "                                                     random_state=42)),\n",
       "                                                (&#x27;svc&#x27;,\n",
       "                                                 SVC(C=10, probability=True,\n",
       "                                                     random_state=42))])),\n",
       "                               (&#x27;RandomForest&#x27;,\n",
       "                                RandomForestClassifier(max_depth=27,\n",
       "                                                       min_samples_leaf=2,\n",
       "                                                       n_estimators=600,\n",
       "                                                       n_jobs=-1,\n",
       "                                                       random_state=42)),\n",
       "                               (&#x27;LGBM&#x27;,\n",
       "                                LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                               n_jobs=-1, random_state=42,\n",
       "                                               verbosity=-1))],\n",
       "                   final_estimator=SVC(), n_jobs=-1)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" ><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StackingClassifier</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.ensemble.StackingClassifier.html\">?<span>Documentation for StackingClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>StackingClassifier(cv=3,\n",
       "                   estimators=[(&#x27;SVC&#x27;,\n",
       "                                Pipeline(steps=[(&#x27;scaler&#x27;, StandardScaler()),\n",
       "                                                (&#x27;pca&#x27;,\n",
       "                                                 PCA(n_components=695,\n",
       "                                                     random_state=42)),\n",
       "                                                (&#x27;svc&#x27;,\n",
       "                                                 SVC(C=10, probability=True,\n",
       "                                                     random_state=42))])),\n",
       "                               (&#x27;RandomForest&#x27;,\n",
       "                                RandomForestClassifier(max_depth=27,\n",
       "                                                       min_samples_leaf=2,\n",
       "                                                       n_estimators=600,\n",
       "                                                       n_jobs=-1,\n",
       "                                                       random_state=42)),\n",
       "                               (&#x27;LGBM&#x27;,\n",
       "                                LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                               n_jobs=-1, random_state=42,\n",
       "                                               verbosity=-1))],\n",
       "                   final_estimator=SVC(), n_jobs=-1)</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>SVC</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" ><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" ><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>PCA</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.decomposition.PCA.html\">?<span>Documentation for PCA</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>PCA(n_components=695, random_state=42)</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" ><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SVC</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>SVC(C=10, probability=True, random_state=42)</pre></div> </div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>RandomForest</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-5\" type=\"checkbox\" ><label for=\"sk-estimator-id-5\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>RandomForestClassifier</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>RandomForestClassifier(max_depth=27, min_samples_leaf=2, n_estimators=600,\n",
       "                       n_jobs=-1, random_state=42)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>LGBM</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-6\" type=\"checkbox\" ><label for=\"sk-estimator-id-6\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LGBMClassifier</div></div></label><div class=\"sk-toggleable__content fitted\"><pre>LGBMClassifier(max_depth=10, n_estimators=145, n_jobs=-1, random_state=42,\n",
       "               verbosity=-1)</pre></div> </div></div></div></div></div></div></div><div class=\"sk-item\"><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>final_estimator</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-7\" type=\"checkbox\" ><label for=\"sk-estimator-id-7\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SVC</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>SVC()</pre></div> </div></div></div></div></div></div></div></div></div></div></div>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 17
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T03:05:05.527010Z",
     "start_time": "2025-04-15T03:04:02.292016Z"
    }
   },
   "cell_type": "code",
   "source": "stack_clf_svc.score(X_val, y_val)",
   "id": "e96a7b216e40e25",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9792380952380952"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 18
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T03:30:15.251685Z",
     "start_time": "2025-04-15T03:27:27.821735Z"
    }
   },
   "cell_type": "code",
   "source": "generate_file(stack_clf_svc, 'result6_svc')",
   "id": "220cf8d4fedf5f6e",
   "outputs": [],
   "execution_count": 23
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "![](./../img/result6_svc.png)",
   "id": "abfcf1c5c06a4b92"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T03:25:39.635352Z",
     "start_time": "2025-04-15T03:08:21.309616Z"
    }
   },
   "cell_type": "code",
   "source": [
    "stack_clf_random = StackingClassifier(estimators=estimators, final_estimator=RandomForestClassifier(n_jobs=-1), cv=3, n_jobs=-1)\n",
    "stack_clf_random.fit(X_train, y_train)"
   ],
   "id": "8a98add5a2604b8",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "StackingClassifier(cv=3,\n",
       "                   estimators=[('SVC',\n",
       "                                Pipeline(steps=[('scaler', StandardScaler()),\n",
       "                                                ('pca',\n",
       "                                                 PCA(n_components=695,\n",
       "                                                     random_state=42)),\n",
       "                                                ('svc',\n",
       "                                                 SVC(C=10, probability=True,\n",
       "                                                     random_state=42))])),\n",
       "                               ('RandomForest',\n",
       "                                RandomForestClassifier(max_depth=27,\n",
       "                                                       min_samples_leaf=2,\n",
       "                                                       n_estimators=600,\n",
       "                                                       n_jobs=-1,\n",
       "                                                       random_state=42)),\n",
       "                               ('LGBM',\n",
       "                                LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                               n_jobs=-1, random_state=42,\n",
       "                                               verbosity=-1))],\n",
       "                   final_estimator=RandomForestClassifier(n_jobs=-1),\n",
       "                   n_jobs=-1)"
      ],
      "text/html": [
       "<style>#sk-container-id-3 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-3 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-3 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-3 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-3 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-3 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-3 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-3 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-3 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-3 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-3 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-3 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-3 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-3 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-3 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-3 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-3\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>StackingClassifier(cv=3,\n",
       "                   estimators=[(&#x27;SVC&#x27;,\n",
       "                                Pipeline(steps=[(&#x27;scaler&#x27;, StandardScaler()),\n",
       "                                                (&#x27;pca&#x27;,\n",
       "                                                 PCA(n_components=695,\n",
       "                                                     random_state=42)),\n",
       "                                                (&#x27;svc&#x27;,\n",
       "                                                 SVC(C=10, probability=True,\n",
       "                                                     random_state=42))])),\n",
       "                               (&#x27;RandomForest&#x27;,\n",
       "                                RandomForestClassifier(max_depth=27,\n",
       "                                                       min_samples_leaf=2,\n",
       "                                                       n_estimators=600,\n",
       "                                                       n_jobs=-1,\n",
       "                                                       random_state=42)),\n",
       "                               (&#x27;LGBM&#x27;,\n",
       "                                LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                               n_jobs=-1, random_state=42,\n",
       "                                               verbosity=-1))],\n",
       "                   final_estimator=RandomForestClassifier(n_jobs=-1),\n",
       "                   n_jobs=-1)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-15\" type=\"checkbox\" ><label for=\"sk-estimator-id-15\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StackingClassifier</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.ensemble.StackingClassifier.html\">?<span>Documentation for StackingClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>StackingClassifier(cv=3,\n",
       "                   estimators=[(&#x27;SVC&#x27;,\n",
       "                                Pipeline(steps=[(&#x27;scaler&#x27;, StandardScaler()),\n",
       "                                                (&#x27;pca&#x27;,\n",
       "                                                 PCA(n_components=695,\n",
       "                                                     random_state=42)),\n",
       "                                                (&#x27;svc&#x27;,\n",
       "                                                 SVC(C=10, probability=True,\n",
       "                                                     random_state=42))])),\n",
       "                               (&#x27;RandomForest&#x27;,\n",
       "                                RandomForestClassifier(max_depth=27,\n",
       "                                                       min_samples_leaf=2,\n",
       "                                                       n_estimators=600,\n",
       "                                                       n_jobs=-1,\n",
       "                                                       random_state=42)),\n",
       "                               (&#x27;LGBM&#x27;,\n",
       "                                LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                               n_jobs=-1, random_state=42,\n",
       "                                               verbosity=-1))],\n",
       "                   final_estimator=RandomForestClassifier(n_jobs=-1),\n",
       "                   n_jobs=-1)</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>SVC</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-16\" type=\"checkbox\" ><label for=\"sk-estimator-id-16\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-17\" type=\"checkbox\" ><label for=\"sk-estimator-id-17\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>PCA</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.decomposition.PCA.html\">?<span>Documentation for PCA</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>PCA(n_components=695, random_state=42)</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-18\" type=\"checkbox\" ><label for=\"sk-estimator-id-18\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SVC</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>SVC(C=10, probability=True, random_state=42)</pre></div> </div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>RandomForest</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-19\" type=\"checkbox\" ><label for=\"sk-estimator-id-19\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>RandomForestClassifier</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>RandomForestClassifier(max_depth=27, min_samples_leaf=2, n_estimators=600,\n",
       "                       n_jobs=-1, random_state=42)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>LGBM</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-20\" type=\"checkbox\" ><label for=\"sk-estimator-id-20\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LGBMClassifier</div></div></label><div class=\"sk-toggleable__content fitted\"><pre>LGBMClassifier(max_depth=10, n_estimators=145, n_jobs=-1, random_state=42,\n",
       "               verbosity=-1)</pre></div> </div></div></div></div></div></div></div><div class=\"sk-item\"><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>final_estimator</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-21\" type=\"checkbox\" ><label for=\"sk-estimator-id-21\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>RandomForestClassifier</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>RandomForestClassifier(n_jobs=-1)</pre></div> </div></div></div></div></div></div></div></div></div></div></div>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 21
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T03:26:34.967894Z",
     "start_time": "2025-04-15T03:25:46.741299Z"
    }
   },
   "cell_type": "code",
   "source": "stack_clf_random.score(X_val, y_val)",
   "id": "1f40a1850dc49864",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9797142857142858"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 22
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T03:35:17.570784Z",
     "start_time": "2025-04-15T03:32:33.033821Z"
    }
   },
   "cell_type": "code",
   "source": "generate_file(stack_clf_random, 'result6_random')",
   "id": "6b59e023cb835269",
   "outputs": [],
   "execution_count": 24
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "![](./../img/result6_random.png)",
   "id": "9abf0c10deb600b9"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T03:50:52.850467Z",
     "start_time": "2025-04-15T03:35:43.912041Z"
    }
   },
   "cell_type": "code",
   "source": [
    "stack_clf_light = StackingClassifier(estimators=estimators, final_estimator=LGBMClassifier(n_jobs=-1), cv=3, n_jobs=-1)\n",
    "stack_clf_light.fit(X_train, y_train)"
   ],
   "id": "e8e81614878dea51",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "StackingClassifier(cv=3,\n",
       "                   estimators=[('SVC',\n",
       "                                Pipeline(steps=[('scaler', StandardScaler()),\n",
       "                                                ('pca',\n",
       "                                                 PCA(n_components=695,\n",
       "                                                     random_state=42)),\n",
       "                                                ('svc',\n",
       "                                                 SVC(C=10, probability=True,\n",
       "                                                     random_state=42))])),\n",
       "                               ('RandomForest',\n",
       "                                RandomForestClassifier(max_depth=27,\n",
       "                                                       min_samples_leaf=2,\n",
       "                                                       n_estimators=600,\n",
       "                                                       n_jobs=-1,\n",
       "                                                       random_state=42)),\n",
       "                               ('LGBM',\n",
       "                                LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                               n_jobs=-1, random_state=42,\n",
       "                                               verbosity=-1))],\n",
       "                   final_estimator=LGBMClassifier(n_jobs=-1), n_jobs=-1)"
      ],
      "text/html": [
       "<style>#sk-container-id-4 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-4 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-4 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-4 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-4 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-4 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-4 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-4 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-4 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-4 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-4 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-4 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-4 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-4\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>StackingClassifier(cv=3,\n",
       "                   estimators=[(&#x27;SVC&#x27;,\n",
       "                                Pipeline(steps=[(&#x27;scaler&#x27;, StandardScaler()),\n",
       "                                                (&#x27;pca&#x27;,\n",
       "                                                 PCA(n_components=695,\n",
       "                                                     random_state=42)),\n",
       "                                                (&#x27;svc&#x27;,\n",
       "                                                 SVC(C=10, probability=True,\n",
       "                                                     random_state=42))])),\n",
       "                               (&#x27;RandomForest&#x27;,\n",
       "                                RandomForestClassifier(max_depth=27,\n",
       "                                                       min_samples_leaf=2,\n",
       "                                                       n_estimators=600,\n",
       "                                                       n_jobs=-1,\n",
       "                                                       random_state=42)),\n",
       "                               (&#x27;LGBM&#x27;,\n",
       "                                LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                               n_jobs=-1, random_state=42,\n",
       "                                               verbosity=-1))],\n",
       "                   final_estimator=LGBMClassifier(n_jobs=-1), n_jobs=-1)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-22\" type=\"checkbox\" ><label for=\"sk-estimator-id-22\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StackingClassifier</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.ensemble.StackingClassifier.html\">?<span>Documentation for StackingClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>StackingClassifier(cv=3,\n",
       "                   estimators=[(&#x27;SVC&#x27;,\n",
       "                                Pipeline(steps=[(&#x27;scaler&#x27;, StandardScaler()),\n",
       "                                                (&#x27;pca&#x27;,\n",
       "                                                 PCA(n_components=695,\n",
       "                                                     random_state=42)),\n",
       "                                                (&#x27;svc&#x27;,\n",
       "                                                 SVC(C=10, probability=True,\n",
       "                                                     random_state=42))])),\n",
       "                               (&#x27;RandomForest&#x27;,\n",
       "                                RandomForestClassifier(max_depth=27,\n",
       "                                                       min_samples_leaf=2,\n",
       "                                                       n_estimators=600,\n",
       "                                                       n_jobs=-1,\n",
       "                                                       random_state=42)),\n",
       "                               (&#x27;LGBM&#x27;,\n",
       "                                LGBMClassifier(max_depth=10, n_estimators=145,\n",
       "                                               n_jobs=-1, random_state=42,\n",
       "                                               verbosity=-1))],\n",
       "                   final_estimator=LGBMClassifier(n_jobs=-1), n_jobs=-1)</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>SVC</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-23\" type=\"checkbox\" ><label for=\"sk-estimator-id-23\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-24\" type=\"checkbox\" ><label for=\"sk-estimator-id-24\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>PCA</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.decomposition.PCA.html\">?<span>Documentation for PCA</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>PCA(n_components=695, random_state=42)</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-25\" type=\"checkbox\" ><label for=\"sk-estimator-id-25\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SVC</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>SVC(C=10, probability=True, random_state=42)</pre></div> </div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>RandomForest</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-26\" type=\"checkbox\" ><label for=\"sk-estimator-id-26\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>RandomForestClassifier</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>RandomForestClassifier(max_depth=27, min_samples_leaf=2, n_estimators=600,\n",
       "                       n_jobs=-1, random_state=42)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>LGBM</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-27\" type=\"checkbox\" ><label for=\"sk-estimator-id-27\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LGBMClassifier</div></div></label><div class=\"sk-toggleable__content fitted\"><pre>LGBMClassifier(max_depth=10, n_estimators=145, n_jobs=-1, random_state=42,\n",
       "               verbosity=-1)</pre></div> </div></div></div></div></div></div></div><div class=\"sk-item\"><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>final_estimator</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-28\" type=\"checkbox\" ><label for=\"sk-estimator-id-28\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LGBMClassifier</div></div></label><div class=\"sk-toggleable__content fitted\"><pre>LGBMClassifier(n_jobs=-1)</pre></div> </div></div></div></div></div></div></div></div></div></div></div>"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 25
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T03:51:35.455297Z",
     "start_time": "2025-04-15T03:50:52.852471Z"
    }
   },
   "cell_type": "code",
   "source": "stack_clf_light.score(X_val, y_val)",
   "id": "47a91bef7fca247c",
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\dev\\python\\python3.11.0\\Lib\\site-packages\\sklearn\\utils\\validation.py:2739: UserWarning: X does not have valid feature names, but LGBMClassifier was fitted with feature names\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.9795238095238096"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 26
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-15T04:33:06.057845Z",
     "start_time": "2025-04-15T04:30:15.673480Z"
    }
   },
   "cell_type": "code",
   "source": "generate_file(stack_clf_light, 'result6_light')",
   "id": "2656c2eea2f0bbff",
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\dev\\python\\python3.11.0\\Lib\\site-packages\\sklearn\\utils\\validation.py:2739: UserWarning: X does not have valid feature names, but LGBMClassifier was fitted with feature names\n",
      "  warnings.warn(\n"
     ]
    }
   ],
   "execution_count": 27
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "![](./../img/result6_light.png)",
   "id": "ef8c823fb81c38a7"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 三、学习总结",
   "id": "999264722b9b9b0e"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 模型对比\n",
    "\n",
    "- 图像处理的利器是神经网络，而这些机器学习算法虽然也可以进行图像的多分类任务，但相较于神经网络有一定的差距。\n",
    "- MNIST 数据集的图像数量为 (42000, 28, 28) 属于大数据量，传统机器学习算法所需运行时间长。这也使得项目推进缓慢且效果一般，因此边际效益高。\n",
    "\n",
    "---\n",
    "\n",
    "|    名称    |           函数           |    最高得分     |      对比      |\n",
    "|:--------:|:----------------------:|:-----------:|:------------:|\n",
    "|   逻辑回归   |   LogisticRegression   |   0.91985   |  数据需要标准化和降维  |\n",
    "|  支持向量机   |          SVC           |   0.96432   |  数据需要标准化和降维  |\n",
    "|   随机森林   | RandomForestClassifier |   0.96396   |  树模型，对数值不敏感  |\n",
    "| LightGBM |     LGBMClassifier     |   0.97392   |  树模型，对数值不敏感  |\n",
    "|    投票    |    VotingClassifier    |   0.97660   | 取长补短，但边际效益较高 |\n",
    "|    堆叠    |   StackingClassifier   | **0.97903** | 取长补短，但边际效益较高 |"
   ],
   "id": "e3d8add991324b37"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 杂谈\n",
    "\n",
    "虽然未学习深度学习的相关知识，但在 ***兴趣使然下***，我还是运用目前所掌握的知识尝试了该项目。\n",
    "\n",
    "---\n",
    "\n",
    "在本次学习的过程中，最有趣的地方莫过于 Kaggle 排名 ***蜗牛一般的缓慢攀爬速度了 :)*** 。\n",
    "\n",
    "作为一个刚刚爬完 Titanic 的 ***纯机器学习新手*** ，这实在让人无可奈何的笑了！\n",
    "\n",
    "只能说 ***Titanic 确实得沉*** ，它水是真多啊：\n",
    "- 如果您也做过这个项目，您可能也觉得它 ***该沉*** 。\n",
    "- 如果您未做过这个项目，那么它可以给你一种 ***降维打击的快乐*** 。\n",
    "\n",
    "---\n",
    "\n",
    "回到本项目，除了排名的有趣，也存在着一些 ***挑战*** ：\n",
    "- 首当其冲的就是 ***数据集 MNIST 的庞大*** （我至今做过的最大数据量）\n",
    "- 然后就是庞大数据集带来 ***运行时间的指数级增长*** （我就一 Inter Core i5-12500H 笔记本，能当电风扇了）\n",
    "- 因此我放弃了（随机）网格搜索，只能挑战 ***手动搜索加运气***  {{{(>_<)}}}，因此我所得出的最优可能不是真正的最优（可能真正最优能够到达 0.98 以上）\n",
    "\n",
    "---\n",
    "\n",
    "收获：\n",
    "- 了解了使用 ***PCA 配合 StandardScaler*** 进行数据降维\n",
    "- 更加熟练地使用了 ***逻辑回归、支持向量机、随机森林、投票、堆叠***\n",
    "- 基本学会了 ***LightGBM 的使用*** （AdaBoost 和 GradientBoost 并不好用）\n",
    "- 对比了 ***随机森林 与 LightGBM 的特征重要性的不同*** （对比图是真漂亮！）\n",
    "\n",
    "---\n",
    "\n",
    "***完事收工！去学深度学习去了！<(￣︶￣)↗[GO!]***"
   ],
   "id": "195015c2099bccfd"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
